连等赋值
引子
解析
这个代码的重点在第二行:let a = b = 0
。这个语句声明了一个局部变量 a
,但是它也声明了一个全局变量b
。
在 foo()
作用域或全局作用域中都没有声明变量 b
。因此 JS 引荐将b = 0
表达式解释为 window.b = 0
。
如下图所示,函数 foo
中的 i
都是一个偶然创建的全局变量:
同样,在咱们的问题中,b
是一个偶然创建的全局变量。在浏览器中,上面的代码相当于如下:
typeof a
是 'undefined'
。变量 a
仅在 foo()
作用域中声明,在外部作用域内不可用。
typeof b
结果是 'number'
。b
是一个值为 0
的全局变量
最后更新于