JavaScript作用域链
程序员文章站
2024-02-17 16:36:10
...
作用域链:当代码执行时,会创建变量对象的一个作用域链(作用域形成的链式结构),用来控制变量的使用顺序。
var a = 10;
function fun(){
var b = 10
function fun1(){
console.log(c);//undefined
b += 5;
var c = 20;//此处给c赋值
function fun2(){
console.log(d);//undefined
var d = 5;
console.log(c + d)//25
}
fun2();
}
console.log(b);//10
fun1();
console.log(b);//15
}
fun();
作用域形成的过程:
当打开浏览器时,先执行全局变量,生成 GO
GO{
a: undefined , 赋值后为10
fun : function…
}
再执行fun() ,生成funAO,
funAO {
b : undefined , 赋值后为10 ,在fun1()中b变为15
fun1 : function…
}
再执行fun1() ,生成fun1AO,
fun1AO{
c: undefined, 赋值后为20
fun2:function…
}
最后执行fun2() ,生成fun2AO
fun2AO{
d : undefined 赋值后为5
}
当在自己作用域范围内没有找到变量时,向自己的父级作用域查找,依次向上,直到找到为止
上一篇: JavaScript作用域链
下一篇: Java——抽象类