javascript执行环境

执行环境是javascript中很重要的一个概念(重中之重)

每个执行环境都对应一个变量对象。在全局执行环境中,根据宿主的不同变量对象也就不一样,比如浏览器中变量对象就是window,而在执行函数的时候,它的执行环境对应的变量对象就是这个函数的活动对象,在刚进入函数的时候,活动对象值包含一个arguments属性,之后函数里申明的局部变量都会加入到其活动对象中。对于活动对象而言我们直接获取他的引用。

当执行函数的时候,其执行环境会跟其外部调用会形成一个执行环境链.

对于函数的活动对象并不是调用它的对象,调用对象会作为活动对象的属性而被保存(姑且这样理解this就是活动对象的一个属性)

var color = "blue";
function getColor(){
 var temColor = color;
return color; } getColor();

当执行getColor时,其对应的执行环境链如下:

对于变量的查询,则就是通过作用域链一级一级的往上进行查找,如果在当前作用链中找到了,则停止往上查找。

延长作用域的情况:

1、with语句(影响性能)

2、try...catch()语句中的catch块

对于上述两种情况,会在当前执行环境链增加一个执行环境。with语句的当前对象就是执行环境的变量对象。而catch会创建一个新对象,里面包含异常对象

原文地址:https://www.cnblogs.com/zhengqun/p/3516973.html