(function(){
var a = b = 3;
})();
console.log(typeof a);//undefined
console.log(typeof b);//number
解析:
首先理解一句话是在立即执行函数体里面var a = b = 3;对这个进行拆解一下(赋值过程从左到右)
b = 3;
var a = b;
变量b是一个全局变量
变量a在封闭的立即执行函数作用域内的局部变量
所以typeof a是undefined typeof b 是number
在非严格模式下,如果在严格模式下(use strict)下,声明var a = b = 3;将产生一个运行时的错误:
ReferenceError:b is not defined

本文探讨了JavaScript中变量的作用域问题,通过一个具体的代码示例解释了在立即执行函数内部与外部对变量进行声明与赋值的区别。尤其是在非严格模式下,变量提升对程序行为的影响。
114

被折叠的 条评论
为什么被折叠?



