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