JavaScript内部:在编译和执行阶段之间存储变量的位置是什么?

时间:2017-05-10 18:33:35

标签: javascript

  

参考:你不了解JS(范围和封闭)

     

第2章:词汇范围

考虑一个例子:

var a = 2;

JavaScript首先编译上面的代码。首先,编译器会进行词法分解。它将其分解为:

var a; &
a = ?;

虽然将其分解为var,但它会通知范围。并且范围维护a在该范围内存在的信息。

然后开始执行阶段。其中a = 2。我试图理解在执行阶段开始之前存储的“a”,即a =“2”的值,即是否发生了任何内存分配。

1 个答案:

答案 0 :(得分:1)

编译器不仅会进行词法分解,而且会将整个代码解析为适当的数据结构(例如parse tree),该结构也包含2等文字。它基本上包含一个指令,如"在变量a的范围内,将从常量表达式2派生的值赋给名为a的变量。&# 34;