2 回答

TA貢獻1803條經(jīng)驗 獲得超3個贊
你那里沒有IIFE。
(
和之間的代碼)
將函數(shù)分配給隱式全局變量sum
。
然后()
after 它然后執(zhí)行評估表達式的結(jié)果(這是同一個函數(shù))。

TA貢獻1770條經(jīng)驗 獲得超3個贊
您的示例代碼沒有明確聲明sum為變量,因此它是隱式的 global?;旧希绻谀_本中處于全局級別,則您的代碼將被解釋為:
var sum = function(b) {
var a = 200;
return a+b;
};
sum();
console.log(sum(1000));
一般來說,IIFE 的目的是創(chuàng)建一個命名空間,最終可以小心地將其導(dǎo)出到有限數(shù)量(希望為 1)的全局符號。在函數(shù)的私有命名空間內(nèi),可以聲明各種數(shù)據(jù)結(jié)構(gòu)和函數(shù)并隨著時間的推移對其進行操作,所有這些都與其他代碼完全隔離。
我認為您的代碼中的關(guān)鍵錯誤是假設(shè)有必要將匿名函數(shù)保存在某處。根據(jù)我的經(jīng)驗,這不是一件常見的事情。通常它看起來像:
(function(args) {
// code, possibly a whole lot
})(parameters);
添加回答
舉報