Appearance
扩展作用域链
本节目标:理解“扩展作用域链”的核心思路,并能把它用于实际开发或面试表达。 虽然执行上下文的类型总共只有两种———全局和函数,但还是有办法延长作用域链的。 因为有些语句可以在作用域链的前端临时增加一个变量对象,该变量对象会在代码执行后被移除。
有两种情况会发生这种现象,如下: 一、try-catch 语句中的 catch 块 当 catch 语句执行时,会创建一个新的变量对象,其中包含了被抛出的错误对象的声明,然后将这个变量对象压入当前上下文作用域链中。
二、with 语句
当 with 语句执行时,会将 with () 中指定的对象压入当前上下文作用域链中。
function outer() {
var number = 1;
with (location) {
}
}
==此时会将== ==location== ==对象添加到当前上下文作用域链的顶端。==