回答編集履歴

1

校生

2019/02/15 10:35

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -12,9 +12,45 @@
12
12
 
13
13
  もしそうならば、これはそういう仕様です。
14
14
 
15
- Webpackはグローバル変数領域を汚さない為に
15
+ JavaScript一番外側の変数スコープはグローバル変数領域であり
16
16
 
17
+ ここに宣言した変数や関数はコンソールでも使えます。
18
+
19
+
20
+
21
+ しかし、1個でも関数宣言を行いますと、
22
+
23
+ その関数内ではスコープが区切られてしまい、その中で変数や関数宣言を行うとグローバル変数領域からは参照出来ない仕様になっています。
24
+
25
+
26
+
27
+ ---
28
+
29
+
30
+
31
+ Webpackは複数のスクリプトファイルを1個のファイルに統合させる為、
32
+
33
+ スクリプトファイルを流し込むみたいな事をやっているはずなので、
34
+
17
- 一度コード全体を関で区切ってスコープをってからそ改めてtest関数を宣言し始めているという設計になっていす。
35
+ 各スクリプトの変領域が混ざって原因ならないよう、いたる所で関数を宣言してスコープで区切っている仕様になっているはずです。
36
+
37
+
38
+
39
+ 関数が1個でも宣言され、
40
+
41
+ その中で変数や関数を宣言してもグローバル変数領域には影響されないんでしたね。
42
+
43
+
44
+
45
+ 念の為一度デベロッパーツールを開いてbundle.jsの中身を開いてみてはどうでしょうか?
46
+
47
+ 多分いたる所で関数宣言で括りまくっていると思います。
48
+
49
+ その結果`function test(){}`も何らかの関数内で実行される事になる為、グローバル変数領域に届かなくなってしまっているかと考えられます。
50
+
51
+
52
+
53
+ ---
18
54
 
19
55
 
20
56