作用域链、执行环境
2019-08-13 本文已影响0人
逆风飘游的鱼
执行环境
定义变量、函数有权访问的其他数据
变量对象
每个执行环境都有一个变量对象,保存了环境定义的变量和函数
注意
全局执行环境是最外围的执行环境,在web浏览器中指的是window
执行环境中的代码执行结束后,环境被销毁,保存在其中的变量和函数也随之销毁
函数的执行环境
每个函数都有自己的执行环境。当执行流进入一个函数时,函数的执行环境就被推入一个环境栈中,函数执行结束,弹出,控制权返回给之前的执行环境
作用域链
作用域链定义:代码在一个执行环境中执行时,会创建由变量对象组成的一个作用域链
作用域链用途:保证对 执行环境有权访问的变量和函数 的有序访问
作用域链前端:始终是当前执行的代码 所在的环境的 变量对象
如果此环境为一个函数,将其活动对象作为变量对象,活动对象最开始只包含一个变量,就是arguments对象
作用域链的下一个变量对象:来自包含环境,再下一个变量对象来自下一个包含环境,一直延伸到全局执行环境。全局执行环境的变量对象一定是作用域链的最后一个对象
标识符解析是沿着作用域链一级一级搜索的,从作用域前端开始,知道找到为止。