function Foo(){
getName = function(){
console.log(1);
};
return this;
}
var getName = function (){
console.log(4)
};
Foo().getName();
上面的程式碼為什麼輸出的是1;
foo()運行之後輸出了this,這個this是window對象,foo()中的getName是不是也就成了全局下的函數表達式;而下面的var getName也是一個函數表達式;為什麼打印結果是1;
foo,執行後它等同於下面這個程式碼麼?
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.