变量范围:
以下代码的输出结果为:
(
function
() {
var
a = b = 5;
})();
console.log(b);
console.log(a);
答案请往下翻
解答:
console.log(b);
//5
|
在这个立即执行函数表达式(IIFE)中包括两个赋值操作,其中a
使用var
关键字进行声明,因此其属于函数内部的局部变量(仅存在于函数中),相反,b
被分配到全局命名空间。
另一个需要注意的是,这里没有在函数内部使用严格模式(use strict
;)。如果启用了严格模式,代码会在输出b时报错Uncaught ReferenceError: b is not defined
,需要记住的是,严格模式要求你显式的引用全局作用域。因此,你需要写成:
1
2
3
4
5
6
|
(
function
() {
'use strict'
;
var
a = window.b = 5;
})();
console.log(b);
|