JavaScript作用域链
程序员文章站
2024-02-17 16:31:28
...
作用域链:
先写上一段代码:
var i = 10;
function a ()
{
var d = 5;
function b ()
{
var d = 10;
var c = 3;
var y = c + d + i;
console.log(y);
}
return b;
}
var oA = a();
oA();
执行的结果为 23
当代码执行到 var y = c + d + i;时,会先在b()函数 内找c,d,i这个三个变量。
b()函数内有c变量值是3就不再往外找。 c = 3
再找变量d,b函数内也有d变量的值是10,就停止往外找,所以变量d的值是10而不是5。 d = 10
再找变量 i,b()函数内没有就往外层的a()函数找,当a()函数也没有就往外面的window找,找到变 i 的值为10。i = 10
所以输出的结果是23
作用域链示意图:
如有不足之处请指出 ,谢谢!