一、关于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