回答編集履歴
1
巻き上げ
test
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
### console.log()
|
2
2
|
|
3
3
|
|
4
|
+
|
5
|
+
> 上記の場合、greet()の実行結果は"hi"ですが、console.log(a)の実行結果はundefinedとなります。
|
6
|
+
|
7
|
+
>
|
8
|
+
|
9
|
+
> 変数の場合、巻き上げによって変数名がundefineの状態でメモリに保存されるため、変数に中身が代入されるより前の行ではundefinedと表示されるのだと理解しています。
|
10
|
+
|
11
|
+
>
|
4
12
|
|
5
13
|
> 関数の場合も変数の巻き上げと同じようなことが行われ、そのときに関数名だけでなく中身も一緒にメモリに保存されるため、変数とは違ってどこからでも中身を参照できるということでしょうか?
|
6
14
|
|
7
15
|
|
8
16
|
|
9
|
-
|
17
|
+
関数宣言より前の行で関数呼び出しが可能なのは**巻き上げ**の影響ですが、返り値の `undefined` は巻き上げとは無関係です。
|
10
18
|
|
11
19
|
console.log() の返り値は **undefined 固定**です。
|
12
20
|
|