(五)执行环境及作用域
2019-03-05 本文已影响0人
萘小蒽
执行环境
1、执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为。
2、每个执行环境都会有一个与之关联的,环境中定义的所有变量和函数都保存在这个对象中,我们编写的代码无法访问这个对象,但是解析器在处理数据时候会在后台使用它。
3、每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个执行栈中。 在函数执行之后,栈将其环境弹出,把控制权返给之前的执行环境。
作用域链
1、当代码在一个执行环境中执行时,会创建的一个
。
2、的用途是保证对执行环境有权访问的所有变量和函数的有序访问。
作用域链的延伸
虽然执行环境的类型只有两种,全局和局部(es5函数)
,但是有其他办法来延长作用域链。
with
语句它将指定的对象添加到作用域中。
function buildurl(){
var qs = "?test = 1231";
with(location){
var url = href + qs;
};
}
with
接收的是location
对象,因此其变量对象中包含了location
对象的所有属性和方法,而这个变量对象被添加到了作用域的前端。
try-catch
语句也同理,不同的是catch
会创建一个新的变量对象(error,ie9之后),里面包含了被抛出的错误对象的声明。(ie8以及之前的版本是添加到执行环境的变量对象,而不是catch语句的变量对象中,就是说在catch外部也能访问
)