执行环境及作用域

        每个函数在被调用的时候都会创建自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中( 环境栈:外层函数所创建的执行环境在栈底,内层函数所创建的执行环境在栈顶)。在函数执行之后,栈将其环境弹出,把控制权返回给上层的执行环境。
        当代码在一个环境中执行时,就会创建由变量对象构成的一个作用域链。作用域链的前端,始终是当前执行环境的变量对象。全局执行环境的变量对象始终都是处于作用域链的最后一个位置上。
var color = "Blue";
function changeColor()
{
    var anotherColor = "Red";
    function swapColor()
    {
        var tempColor = anotherColor;
        anotherColor = color;
        color = tempColor;
        //在这里可以访问到color、anotherColor、tempColor
    }
    swapColor();
    //这里可以访问到color、anotherColor,但访问不到tempColor
}
chageColor();
alert("Color is now "+ color);
//这里只能访问到color

由此例,我们可以简单理解变量的作用域是以函数体划分开来的,内层函数可以访问到外层函数的变量,而外层函数访问不到其内层函数内的变量。

还有一个就是JavaScript是没有块级作用域的,if、else、for、while等里面声明的变量,在花括号之外是可以访问到的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值