Quelqu'un peut-il expliquer cela (le code dans le contexte global)Javascript attribution des variables globales à themself
var a = a || 4 // a exists & is 4
window.a = window.a || 4 // a exists & is 4
window.a = a || 4 // a is undefined error
a = a || 4 // a is undefined error
Une explication de ce que la différence entre ces 4 missions et pourquoi certains gérer correctement, mais d'autres ne le font pas. [Modifier] Cet exemple a été testé sur la console V8 Chrome.
Bien sûr, la différence ici est une propriété non définie sur un objet et un objet non déclaré. Pourquoi un non défini à la compilation mais non déclaré lors de l'exécution? – Raynos
L'instruction 'var' déclare la variable dans la portée d'encapsulation la plus proche et la définit sur' undefined'. Quand il n'y a pas 'var', il n'y a aucune variable déclarée. Par conséquent, l'erreur de référence. –
Nice, je ne savais pas 'var bar = 0' a été défini au moment de la compilation dans la portée de la fonction. C'est pourquoi j'ai seulement besoin d'une déclaration 'var' au lieu de deux – Raynos