一些代码中的小细节

Posted on 2017-09-18 14:53  风铃同学  阅读(108)  评论(0编辑  收藏  举报
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外访问会报错。