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会创建一个新对象,里面包含异常对象