javascript的执行环境及作用域概念总结与理解

一、关于JavaScript代码分类:在javascript中,可执行的JavaScript代码分三种类型:

    1. Global Code:即全局的、不在任何函数里面的代码,例如:一个js文件、嵌入在HTML页面中的js代码等。 
    2. Eval Code:即使用eval()函数动态执行的JS代码。 
    3. Function Code:即用户自定义函数中的函数体JS代码。

二、关于执行环境(execution context):

    执行环境是一个概念,一种机制,用来完成JavaScript运行时作用域、生存期等方面的处理。
    所有JavaScript代码都是在某一个执行环境中被执行的。
    不同类型的javascript代码具有不同的执行环境,执行环境两类两类:全局执行环境和函数局部执行环境。
    每个函数都有自己的执行环境,即函数局部执行环境,函数执行环境中的所有代码执行结束后,该环境被销毁,其中的所有变量和函数定义也随之被销毁
    全局执行环境是最外围的执行环境,应用程序退出将被销毁。

三、关于变量对象(variable object):

    每个执行环境都有一个与之关联的变量对象。
    变量对象中保存了对应执行环境中定义的所有变量和函数。
    全局执行环境对应的叫做变量对象(variable object),函数执行环境对应的叫做活动对象(activition object)。
    在web浏览器中,全局执行环境被认为是window对象,所有全局变量和函数都是window对象的属性和方法。
    函数执行环境对应的的活动对象不可访问,其最开始时只包含一个变量,即arguments对象,全局环境中不存在arguments对象。

四、关于作用域链(scope chain):

    代码在执行环境中执行时,执行环境会为变量对象创建作用域链。
    作用域链是由变量对象组成的数据对象链。
    作用域链的前端,始终是当前函数执行环境的变量对象。
    作用域链的最后端,始终是全局执行环境的变量对象。
    理解变量对象作用域链创建过程:http://www.cnblogs.com/pigtail/archive/2012/07/19/2570988.html (定义期和执行期共同完成)

五、执行环境创建过程完成了:

    变量对象的创建和实例化,
    作用域的分配(变量对象作用域链的创建)。
    创建函数执行环境,也就是创建函数的变量对象(活动对象),声明变量和函数,是在函数被调用时进行的,函数内部定义的变量和函数都保存在改变量对象中。
    执行环境创建过程详细解析:http://www.cnblogs.com/fool/archive/2010/10/19/1855266.html 【函数执行环境】【最后的实例】

六、引用参考:
http://www.cnblogs.com/zxj159/archive/2013/05/17/3084598.htm
http://www.cnblogs.com/pigtail/archive/2012/07/19/2570988.html
http://www.cnblogs.com/fool/archive/2010/10/19/1855266.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值