(function() {
var a = b = 5;
})();
console.log(b); //5
console.log(a); // a is not defined
函数内定义var a=b=5,拆开分析即
var a
a=b
b=5
首先a声明在函数作用域中,函数执行完毕后清空了局部作用域中的变量,即函数外面访问不到了,所以打印时出现 a is not defined
其次是b, b在函数中未声明,此时会“跳出”函数的局部作用域,进入到全局作用域中并被自动声明(相当于在全局中var b = 5),对应的是window.b = 5 。所以后续打印b的值会显示出5
以下为区分作用域的例子: