js最全:JavaScript中的执行环境以及作用域

一。js中的执行环境
概念:执行环境是js中最重要的一个概念。它定义了变量或函数有权访问其他的数据,决定了各自的行为。每个执行环境中都有一个与之有关的变量对象,变量对象中包含了执行环境中定义的所有变量和函数。

类型:全局和局部。根据ECMAScript实现所在的宿主环境不同,执行环境的对象也不同。web浏览器中window对象是全局执行环境。全局变量和函数都是作为window对象的属性和方法创建的。某个环境中所有代码执行后,该环境就会销毁,其里面所有定义的变量和函数定义也销毁(全局执行环境直到退出应用程序才会销毁)。

执行环境的顺序:每个函数都有自己的执行环境。当执行流进入一个函数,函数的环境就会被推入一个环境栈中。当函数执行完后,栈将其弹出。把控制权还给之前的执行环境。

二。作用域
概念:代码执行时会产生一个作用域。是为了限制变量在程序中得使用范围。分为全局作用域,函数作用域,模块作用域。

三。作用域链
概念:代码在执行环境中执行时会创建变量得一个作用域链。
作用:保证当前执行环境有权访问的所有变量和函数的有序访问。例如当前是执行环境是函数,则最开始作用域链包含得是argument对象,下一个变量对象来自紧邻得外一层环境,再下一个来自再外一层得环境,直至搜寻到全局执行环境。这样就构成了一个作用域链。
执行环境中,访问的变量顺序是:一层一层往上一级寻找。

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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值