鍍金池/ 問答/HTML/ js函數(shù)作用域的問題。

js函數(shù)作用域的問題。

關(guān)于函數(shù)作用域有些地方?jīng)]想明白,先貼上代碼吧。
function Foo() {

getName = function () { alert (1); }

}
Foo();
getName();//1

function Foo() {

getName = function () { alert (1); }
return window

}
Foo().getName();//1

function Foo() {

getName = function () { alert (1); }

}
Foo().getName();//報錯
首先是三段代碼都是一個類型,1.第一個我的理解就是在全局執(zhí)行Foo()后在全局中也就是window中創(chuàng)建了一個變量getName并將function () { alert (1); }賦值給他。之后在全局中調(diào)用這個函數(shù)得到1. 2.第二段代碼代碼是連著寫的,內(nèi)容基本能看懂,還是先在全局中創(chuàng)建了變量,賦值。然后返回一個值window。之后相當于window。getName().得到1. 3,第三段代碼我就沒搞懂了,首先foo執(zhí)行之后還是能在全局中創(chuàng)建變量賦值。然后Foo函數(shù)執(zhí)行完退出函數(shù)的執(zhí)行環(huán)境,之后交給之前的執(zhí)行環(huán)境window。然后調(diào)用getName,我的理解的話也是1. 我知道肯定有地方不對,不是人家也不會用return window。我現(xiàn)在主要不理解的是為啥要return window,還有 Foo().getName()這個的過程到底做了什么?今天看了很久都還是不太理解,

回答
編輯回答
獨白

第三段代碼執(zhí)行Foo()后返回undefined undefined.getName()報錯啊 你確定彈出了undefined?

2018年8月4日 15:39