Modifier On dirait que c'était un problème de ma part et mon utilisation de jsfiddle:?Essayer de comprendre complètement le levage JavaScript
J'ai lu quelques articles sur le levage récemment, l'un est by Nicholas Zakas, et l'autre est by Ben Cherry.
Im essayant de suivre les exemples et tester simplement sur mon propre pour vous assurer que je saisis bien, mais Im ayant un problème principalement avec cet exemple,
if (!('a' in window)) {
var a = 1;
}
console.log(a);
Au lieu de l'exploitation forestière undefined
son exploitation forestière 1
. Si je comprends tout correctement, a
devrait être undefined
, parce que devrait exister dans la fenêtre en raison de l'instruction var hissé en haut, donc il ne devrait pas être assigné la valeur.
Mais ce qui suit agit comme prévu,
(function bar(){
console.log(foo);
var foo = 10;
console.log(baz);
})();
foo
est undefined
et baz
n'est pas défini. J'ai un fiddle ici avec les deux exemples. Vraiment juste essayer d'envelopper ma tête autour de ça. Est-ce que quelque chose a changé depuis que ces articles ont été écrits peut-être? Si quelqu'un peut faire la lumière sur cela, ce serait apprécié. Im en utilisant Chrome 14 lors des tests.
Je suis en votre violon dans Google Chrome et imprime 'undefined'. Pour une bonne explication du levage, vous pouvez jeter un oeil à * O'Reilly JavaScript Patterns *. Il y a un ** paragraphe ** dédié. – user278064
Oui, apparemment, c'était parce que je n'utilisais pas correctement jsfiddle. – Loktar