(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