要是实在不知道要干什么,那就喝两杯思路就来了!

导航菜单

JavaScript 的作用域链

作用域链的查找:首先在函数休内向上查找,如果找不到,就去形参里面找,形参里面再找不到,那么就考虑函数体内的变量声明提升,如果还是没有,就去上一级作用域里面,从函数调用执行的位置开始向上查找,而不是封装函数的位置。下面使用一个小 demo 可以非常清晰的展示出其查找的步骤。

// ④ 跳出函数体上一作用域查找,从函数执行的位置 [14行] 开始往上查找。
var a = 100;

// ② 其次去形参里面找。
function test (a) {
	// ① 首先从函数体内向上查找。
	var a = 200;
	// 函数执行时 [14行],作用域链查找从此 [9行] 开始查找。
	console.log(a);
	// ③ 再次考虑函数体内的变量声明提升。
	var a = 300;
}

test(a);

// ⑤ 在上一作用域内向上再查找不到,依然考虑该作用域的变量声明提升。
var a = 400;


发表评论