词法环境
词法环境是一种规范类型,根据代码的词法嵌套结构来定义变量名和变量的关联。
简单来说就是变量的映射关系。
每个词法环境为分为三个组件:
- 环境记录(
Environment Record)
环境记录类型有分为两种
- 声明式环境记录:存储变量和函数声明(函数中还有参数对象)(函数代码的词法环境)
- 对象环境记录:除了存储变量和函数声明,还存储全局绑定对象(浏览器是 window)(全局代码的词法环境)
外部词法环境的引用(outer)
意味着可以通过这个引用来访问外部的词法环境,意味着如果有变量在当前词法环境找不到的话,JavaScript 引擎会在外部词法环境中继续寻找。
- This 绑定组件
在这里组件确定 This 的指向,在全局执行上下文就指向全局对象,在函数执行上下文中,this 取值就取决于函数是如何被调用的。