鍍金池/ 問答/HTML/ 關(guān)于執(zhí)行上下文的數(shù)據(jù)結(jié)構(gòu)的疑問

關(guān)于執(zhí)行上下文的數(shù)據(jù)結(jié)構(gòu)的疑問

以前學(xué)習(xí)過執(zhí)行上下文內(nèi)部結(jié)構(gòu)的一些知識(shí),大概的知道執(zhí)行上下文內(nèi)部有變量對(duì)象VO/AO、this、作用域鏈Scope等屬性。

今天看了篇關(guān)于執(zhí)行上下文的文章,文中給出了全局執(zhí)行上下文和函數(shù)執(zhí)行上下文的數(shù)據(jù)結(jié)構(gòu)。

  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對(duì)應(yīng)了以前學(xué)的知識(shí)中的變量對(duì)象?外部指針對(duì)應(yīng)了Scope?
  2. 按以前學(xué)的知識(shí),只有函數(shù)的形參、函數(shù)聲明、變量聲明可以進(jìn)入變量對(duì)象,為什么在function Execution Context中,函數(shù)表達(dá)式 function expression也進(jìn)入了enviroment,說明了 enviroment不是變量對(duì)象?

3.在Global Execution Context中有g(shù)lobal object和enviroment,按道理,全局對(duì)象就是全局變量對(duì)象,相同的東西沒必要保存兩份,這也證明了 enviroment 不是變量對(duì)象吧。

所以,對(duì)原文的正確性,有些存疑。

回答
編輯回答
不將就

我個(gè)人覺得 按作者的意思:
enviroment 就是 變量對(duì)象
outer environment 就是 作用域鏈

至于
lobal Execution Context 中的 global object
enviroment 中的 function expression
我也沒懂它寫的什么, 畢竟也是每個(gè)人自己的總結(jié), 也不是權(quán)威結(jié)論, 自己 get 到點(diǎn)就行了

2017年11月7日 07:30