参考:あなたはJS(&クロージャをスコープ)JavaScript内部:コンパイルと実行の中間に格納される変数はどこにありますか?
第2章知らない:レキシカルスコープ
を例に考えてみましょう:
var a = 2;
JavaScriptが最初に上記のコードをコンパイルします。最初にコンパイラは字句解析を行います。
var a; &
a = ?;
これを分解してvar aとして範囲を通知します。スコープは、そのスコープ内に存在するかどうかの情報を保持します。
その後、実行ステージが開始されます。ここで、a = 2が割り当てられる。私は、実行ステージ前に格納されている "a"、つまりa = "2"の値がどこで開始されているか、つまりメモリ割り当てが起こっているかを理解しようとしています。
「a」を格納する場所が必要なので、確実にメモリ割り当てが行われています。その処理方法は、問題のJSエンジンに基づいて異なります。 –
@MikeCそれでは、コンパイラ自身がデータをメモリに格納するかどうかという疑問が生じます。 もう1つ、この情報はどこで入手できますか? JavaScriptの内部のように... –
*インタプリタ*は値をメモリに保持します。必要に応じてディスク上のどこかに値を保持します。 *コンパイラ*は出力を提供するだけです。エンジンの内部を理解したい場合は、V8ソースコードを探してみることをお勧めします。 –