(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复制代码