關(guān)于函數(shù)作用域有些地方?jīng)]想明白,先貼上代碼吧。function Foo() {getName = function () { alert (1); }}Foo();getName();//1function Foo() {getName = function () { alert (1); }return window}Foo().getName();//1function 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。之后相當(dāng)于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()這個的過程到底做了什么?今天看了很久都還是不太理解,
js函數(shù)作用域的問題。
慕虎7371278
2019-03-20 17:19:27