回答編集履歴
2
ちょっとだけ表現を変えた
test
CHANGED
@@ -98,7 +98,7 @@
|
|
98
98
|
|
99
99
|
|
100
100
|
|
101
|
-
※ 変数に初期値が代入される
|
101
|
+
※ 関数宣言を除き、変数に指定された初期値が代入されるタイミングは宣言文が来たときであり、それまでは開始時の変数作成時に入れられた値が使われます。`var`で宣言されたは最初に`undefined`が入るため、宣言文の前に変数にアクセスしてもエラーになりません。`let`と`const`で宣言された変数は未初期化(uninitialized)という特別な状態になるため、宣言文の前に変数にアクセスしようとする`ReferenceError`例外が発生します。いずれの場合も、変数自体は宣言文が来る前に存在していることに注意してください。この動作はC等の他言語にはあまり見られない、ECMAScript特有のものです。
|
102
102
|
|
103
103
|
|
104
104
|
|
1
ちょっとだけ変えた
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
|
32
32
|
|
33
|
-
ここまではついてきていますか?よし、いいでしょう。よくわからないレキシカル環境というものが出てきました。まずは、これを読み解く必要があります。レキシカル環境とは文法上区別された一定の範囲のことです。トップレベルのスクリプト全体、モジュール、関数定義、ブロック文等があります。特別なものとして、トップレベルに使われるグローバル環境(global environment)、モジュール環境(module environment)、関数環境(function environment)があります。それぞれの環境はグローバル環境が一番外側にあって、ネストされた構成になっています。(今回、モジュール環境については説明しません。)
|
33
|
+
ここまではついてきていますか?よし、いいでしょう。よくわからないレキシカル環境というものが出てきました。まずは、これを読み解く必要があります。レキシカル環境とは文法上区別された一定の範囲のことです。トップレベルのスクリプト全体、モジュール、関数定義、ブロック文等があります。特別なものとして、トップレベルに使われるグローバル環境(global environment)、モジュールで使われるモジュール環境(module environment)、関数で使われる関数環境(function environment)があり、ちょっとだけ特別な動作をします。if文のブロックとかは通常のレキシカル環境です。それぞれの環境はグローバル環境が一番外側にあって、ネストされた構成になっています。(今回、モジュール環境については説明しません。)
|
34
34
|
|
35
35
|
|
36
36
|
|