Maison > Questions et réponses > le corps du texte
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
高洛峰2017-06-26 10:55:22
Quand Foo n'est pas appelé
window.getName = function(){
console.log(4);
}
Lorsque vous appelez Foo()
getName = function(){
console.log(1);
};
// 相当于更改了 window.getName
Après l'appel, return this
dans Foo pointe vers la fenêtre, donc le résultat final est 1.
扔个三星炸死你2017-06-26 10:55:22
function Foo(){
getName = function(){
console.log(1);
};
return this;
}
//全局声明一个变量getName
var getName = function (){
console.log(4)
};
//重新赋值
getName = function () {
console.log(1)
}
//最终打印结果为1
window.getName()
阿神2017-06-26 10:55:22
function Foo(){
getName = function(){
console.log(1);
};
return this;
}
var getName = function (){
console.log(4)
};
Foo().getName();
function Foo(){
getName = function(){
console.log(1);
};
return this;
}
var getName = function (){
console.log(4)
};
getName = function () {
console.log(1)
}
window.getName()
ringa_lee2017-06-26 10:55:22
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