执行环境

执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个函数都有自己的执行环境。
当代码在一个环境中执行时,会创建变量对象的一个作用域链。作用域链的用于,是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终都是当前执行的代码所在的环境的变量对象。
eg:

var color="blue";
function changeColor()
{
    var anotherColor="red";
    function swapColors()
    {
        var tempColor=anotherColor;
        anotherColor=color;
        color=tempColor;
        //这里可以访问color、anotherColor和tempColor
    }
    //这里可以访问color和anotherColor,但不能访问tempColor
    swapColors();
}
//这里只能访问color
changeColor();

以上代码共涉及3个执行环境:全局变量、changeColor()的局部变量和swapColor()的局部变量。
这里写图片描述
无论全局变量还是changeColor()的局部环境都无权访问tempColor。然而,在swapColors()内部则可以访问其他两个环境中的所有变量,因为那两个环境是它的父执行环境。

内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数。这些环境之间的联系是线性、有次序的。每个环境都可以向上搜索作用域链,以查询变量和函数名;但任何环境都不能通过向下搜索作用域链而进入另一个执行环境

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值