//闭包var a = 5;var color = 'red';function woot(){ console.log(color) //red console.log(a) //undefined var a = 6; function test(){ console.log(a == 6); //true } test();}woot();问题:我在window全局变量下定义了两个变量,分别是变量a和color,我们知道这两个变量是基本值类型number和string,然后在下面定义了一个闭包,但是在woot函数里面能访问到color的值red,却输出不了a的值5,根据我学过的知识,知道作用域链是里面的能访问上一层作用于链,层层递进直到window全局,但是在我这个例子中却有点说不通,因为在woot里面并没有输出a的值,哪位大神能否解答一下。下面是我画的作用域图:
1 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
function woot(){
console.log(color) //red
console.log(a) //undefined
var a = 6;
function test(){
console.log(a == 6); //true
}
test();
}
单看woot函数,其中先console.log(a),但是后面就是var a = 6;,变量和函数定义都会提升,也就是上面代码会变成下面这样。
function woot(){
function test(){
console.log(a == 6); //true
}
var a;
console.log(color) //red
console.log(a) //undefined
a = 6;
test();
}
添加回答
举报
0/150
提交
取消