Pourquoi la fonction d'auto-invocation dans une fonction n'obtient pas la portée de la fonction externe dans JavaScript?Portée de la fonction d'auto-invocation dans Javascript
var prop = "global";
var hash = {
prop: "hash prop",
foo: function(){
console.log(this.prop);
(function bar(){
console.log(this.prop);
})();
}
};
var literal = {
prop: "object"
};
hash.foo();
// hash prop
// global
hash.foo.call(literal);
// object
// global
On dirait que la modification de la portée de la fonction externe n'a aucun effet sur la portée de la fonction d'auto-invocation interne. PS: La question n'est pas de savoir comment modifier la portée de la fonction interne. Mais quelle est la bonne explication dans la perspective "langage Javascript"? Toutes les fonctions auto-exécutables ont-elles une portée "globale" par défaut? Si oui, pourquoi?
+1 pour la première solution! –