参考:你不了解JS(范围和封闭)
第2章:词汇范围
考虑一个例子:
var a = 2;
JavaScript首先编译上面的代码。首先,编译器会进行词法分解。它将其分解为:
var a; &
a = ?;
虽然将其分解为var,但它会通知范围。并且范围维护a在该范围内存在的信息。
然后开始执行阶段。其中a = 2。我试图理解在执行阶段开始之前存储的“a”,即a =“2”的值,即是否发生了任何内存分配。
答案 0 :(得分:1)
编译器不仅会进行词法分解,而且会将整个代码解析为适当的数据结构(例如parse tree),该结构也包含2
等文字。它基本上包含一个指令,如"在变量a
的范围内,将从常量表达式2
派生的值赋给名为a
的变量。&# 34;