function Foo(){
getName = function(){
console.log(1);
};
return this;
}
var getName = function (){
console.log(4)
};
Foo().getName();
Pourquoi le code ci-dessus génère-t-il 1 ;
Après l'exécution de foo(), ceci est la sortie. Il s'agit de l'objet window. Est-ce que getName dans foo() devient une expression de fonction globale ? Et la variable suivante getName est également une expression de fonction : pourquoi le résultat d'impression est-il 1 ;
foo, après exécution, est-ce équivalent au code suivant ?
getName = function(){
console.log(1);
};
var getName = function (){
console.log(4)
};
getName(); //4
Quand Foo n'est pas appelé
Lorsque vous appelez Foo()
Après l'appel,
return this
dans Foo pointe vers la fenêtre, donc le résultat final est 1.Foo().getName(); exécute getName dans Foo
Vérifiez console.log(Foo()), êtes-vous sûr que c'est une fenêtre ?
Le getName dans la fonction Foo n'est pas déclaré avec var, il est donc global, donc lorsque Foo est exécuté, la fonction getName à l'intérieur de la fonction écrasera celle définie à l'extérieur