Heim > Fragen und Antworten > Hauptteil
function Foo(){
getName = function(){
console.log(1);
};
return this;
}
var getName = function (){
console.log(4)
};
Foo().getName();
Warum gibt der obige Code 1;
aus?Nachdem foo() ausgeführt wurde, wird dies das Fensterobjekt in foo() sein. Und die folgende Variable getName ist auch ein Funktionsausdruck
foo, entspricht es nach der Ausführung dem folgenden Code?
getName = function(){
console.log(1);
};
var getName = function (){
console.log(4)
};
getName(); //4
高洛峰2017-06-26 10:55:22
没调用Foo的时候
window.getName = function(){
console.log(4);
}
调用Foo()的时候
getName = function(){
console.log(1);
};
// 相当于更改了 window.getName
调用后Foo里面的return this
的确指向window,所以最后结果是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()