(function() {
var a = b = 5;
})();
consol.log(b);//5
cnsole.log(a)//ReferenceError: a is not defined複製代碼
這個問題的陷阱就是,在當即執行函數表達式(IIFE)中,有兩個賦值,可是其中變量a
使用關鍵詞var
來聲明。這就意味着a
是這個函數的局部變量。與此相反,b
被分配給了全局做用域(譯註:也就是全局變量)。javascript
這個問題另外一個陷阱就是,在函數中沒有使用」嚴格模式」 ('use strict';
)。若是 嚴格模式開啓,那麼代碼就會報錯 」 Uncaught ReferenceError: b is not defined」 。請記住,若是這是預期的行爲,嚴格模式要求你顯式地引用全局做用域。java
(function() {
'use strict';
var a = b = 5;
})();
console.log(b);//ReferenceError: b is not defined複製代碼