回答編集履歴

1

追記

2020/05/09 03:30

投稿

gentaro
gentaro

スコア8949

test CHANGED
@@ -21,3 +21,31 @@
21
21
 
22
22
 
23
23
  ここで初めて関数の中身が開始されるので、その時アクセスできるスコープにarrayがあるからエラーになりません。(良いコードだとは思いませんけど。)
24
+
25
+
26
+
27
+ ---
28
+
29
+ 追記
30
+
31
+
32
+
33
+ 一応「良いコードだとは思わない」理由を。
34
+
35
+ エラーにこそなりませんが、これは関数実行前に
36
+
37
+
38
+
39
+ ```JavaScript
40
+
41
+ const array = [3, 5, 15, 9];
42
+
43
+ ```
44
+
45
+
46
+
47
+ のような変数arrayを宣言している事が必須になる(関数の呼び出し方に制限がある=ないとエラーになる)ので、「よくないコード」です。
48
+
49
+
50
+
51
+ こんな書き方するぐらいなら、関数宣言時に配列を仮引数で受け取るようにして、関数呼び出し時に引数として渡してやる方が良いです。