执行环境和作用域
1、执行环境(execution context)
执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。
全局执行环境是最外围的执行环境,浏览器环境下全局执行环境被认为是<strong>window</strong>对象。
每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个<strong>环境栈</strong>中。而在函数执行之后,栈将环境弹出,把控制权返回给之前的执行环境。
2、作用域
当代码在一个环境中执行时,会创建变量对象的一个<strong>作用域链(scope chain)</strong>,它的的作用是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端始终都是当前执行的代码的所在环境的变量对象。如果这个环境是函数,则将其活动对象(activation object)作为变量对象。活动对象最开始只包含一个变量,即argument对象。作用域链中的下一个变量对象来自包含环境,而再下一个变量对象则来自下一个包含环境。就这样一直延续到执行环境。
作用域的延长
try...catch的catch块
with