猿问

关于执行上下文的数据结构的疑问

以前学习过执行上下文内部结构的一些知识,大概的知道执行上下文内部有变量对象VO/AO、this、作用域链Scope等属性。

今天看了篇关于执行上下文的文章,文中给出了全局执行上下文和函数执行上下文的数据结构。

  Global Execution Context = {
        global object,
        this: global object,
        outer environment: null,
        enviroment: {
            // all the identifiers
            variable,
            function expression,
            function declaration,
        },
    }
  Execution Context = {
        this: some value,
        outer environment: outer lexcial environment,
        enviroment: {
            // all the identifiers
            parameter,
            arguments,
            variable,
            function expression,
            function declaration,
        },
    }

我的疑问比较多:

  1. eviroment对应了以前学的知识中的变量对象?外部指针对应了Scope?

  2. 按以前学的知识,只有函数的形参、函数声明、变量声明可以进入变量对象,为什么在function Execution Context中,函数表达式 function expression也进入了enviroment,说明了 enviroment不是变量对象?

3.在Global Execution Context中有global object和enviroment,按道理,全局对象就是全局变量对象,相同的东西没必要保存两份,这也证明了 enviroment 不是变量对象吧。

所以,对原文的正确性,有些存疑。


吃鸡游戏
浏览 421回答 1
1回答

白猪掌柜的

我个人觉得 按作者的意思:enviroment 就是 变量对象outer environment 就是 作用域链至于lobal Execution Context 中的 global objectenviroment 中的 function expression我也没懂它写的什么, 毕竟也是每个人自己的总结, 也不是权威结论, 自己 get 到点就行了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答