LouisTsang-jk.github.io

词法环境

词法环境是一种规范类型,根据代码的词法嵌套结构来定义变量名和变量的关联。 简单来说就是变量的映射关系。

每个词法环境为分为三个组件:

  1. 环境记录(Environment Record)
    环境记录类型有分为两种
    • 声明式环境记录:存储变量和函数声明(函数中还有参数对象)(函数代码的词法环境)
    • 对象环境记录:除了存储变量和函数声明,还存储全局绑定对象(浏览器是 window)(全局代码的词法环境)
  2. 外部词法环境的引用(outer)
    意味着可以通过这个引用来访问外部的词法环境,意味着如果有变量在当前词法环境找不到的话,JavaScript 引擎会在外部词法环境中继续寻找。
  3. This 绑定组件
    在这里组件确定 This 的指向,在全局执行上下文就指向全局对象,在函数执行上下文中,this 取值就取决于函数是如何被调用的。