题目描述:写出执行结果并解释原因
(function(){
var a=b=5;
})();
console.log(b);
console.log(a);
答案:
5
Uncaught ReferenceError: a is not defined
解析:
- 在这个立即执行的函数表达式中(IIFE)包含两个赋值操作,其中 a 使用 var 关键字进行声明,因此其属于函数内部的局部变量(仅存在于函数中),相反,b 被分配到全局命名空间,可以看作 var a = 5; b = 5;
- 另一个需要注意的时,这里没有在函数内部使用严格模式,如果启用了严格模式,代码会在输出 b 时报错 Uncaught ReferenceError: b is not defined ,需要记住的是,严格模式要求你显示的引用全局作用域