Javacript的作用域链

作用域

作用域就是可访问变量,对象,函数的集合。
作用域分为全局作用域和局部作用域
局部作用域(Activation Object (AO)) :只能在当前函数中访问
全局作用域(Global Object (GO)):只要定义了,可以在代码中的任何位置访问
作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突

var a = 10;//全局变量
function fun(){
var a =  10;//局部变量
}

作用域链

1.一般情况下,变量的取值到会先从在函数里面开始查找,但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过 程形成的链条就叫做作用域链。

2.当函数中需要查找一个变量的值的时候,会在从作用域链查找,先是从函数自身里中先找,如果没有找到对应的变量,则到下一级的链上找,一旦找到了变量,则不再继续,如果找到最后也没有找到需要的变量,则返回undefined。

var a= 10;
function fun(){
    var a= 20;
    function fun1(){
        var a= 30;
        console.log(a);  //输出:30  先找函数自身的变量,
    }
    fun1();
}
fun();
var b = 10;
function fun(){
    var b = 20;
    function fun1(){
        console.log(b);  //输出:20  先找函数自身的变量,再找父级函数中的变量
    }
    fun1();
}
fun();
var c= 10; 
function fun(){
    function fun1(){
      console.log(c); //输出:10  先找函数自身的变量,再找父级函数中的变量, 然后再找全局对象的变量
    }
    fun1();
}
fun();
function fun(){
    function fun1(){
        console.log(d);  //输出:undefined  先找函数自身的变量,再找父级函数中的变量,
        					然后再找到全	局对象的变量,还是没找到就返回undefined
    }
    fun();
}
fun();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值