简要描述javascript中的作用域链

     任何一段Javascript代码都对应一个作用域链,作用域链中存放一系列对象,代码中申明的变量将作为对象的属性而存放。

     在javascript的顶层代码中,作用域链由一个全局对象组成,当定义一个函数时,它保存一个作用域链,作用域链上有两个对象,一个是函数对象,一个是全局对象。

    每当一个函数被调用时,会创建一个活动对象(也叫上下文对象),函数中的局部变量,将作为该对象的属性存放。

    当需要使用一个变量时,将从作用域链中逐个查找对象的属性。比如:要使用变量a,将先查找作用域链中的第一个对象是否有属性a ,如果有就是使用,如果没有就继续查找作用域链中下一个对象的属性,以此类推。

    如果作用域链上没有任何一个对象有属性x,则认为这段代码的作用域链上不存在属性x,将刨除引用错误异常。

   当函数调用我完成后,如果没有其他引用指向为这次调用所创建的上下文活动对象,该对象将被收回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值