执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为.每个执行环境都有一个与之关联的变量对象(用来保存执行环境中定义的所有变量和函数)
在 Web 浏览器中,全局执行环境(即最外层的执行环境)被认为是 window 对象.
机制:每一个函数都有自己的执行环境.当执行流进入一个函数时,函数的环境就会被推入一个环境栈中.而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境.
当代码在一个执行环境中执行时,会创建一个作用域链.
作用域链的用途是:保证对执行环境有权访问的所有变量有序访问.
作用域链:
当前执行的代码所在的执行环境的变量对象(子)
–> 包含执行环境(父)
–> 下一个包含执行环境(爷)
–> ….
–> window 对象(最外层)
1 | var color = 'blue' |
1 | var color = 'blue' |