function foo(){
var a=b=5;
}
console.log(a); //ReferenceError: a is not defined
console.log(b); //5
function foo(){
"use strict;" //加上严格模式
var a=b=5;
}
console.log(a); //ReferenceError: a is not defined
console.log(b); //ReferenceError: b is not defined
解析:
因为 var a = b = 5
等价于
var a;
b = 5;
a = b;
在非严格模式中,未声明变量默认为全局变量,可以在全局环境中通过this访问。
严格模式取消了默认this全局变量,因此在函数foo外访问会报错。