回答編集履歴
1
説明の順序などを微調整
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
まず、この結果が1,2,3と表示されるのは理解できると思います。
|
2
|
+
|
1
3
|
```javascript
|
2
4
|
|
3
5
|
var x = 1;
|
@@ -12,11 +14,15 @@
|
|
12
14
|
|
13
15
|
```
|
14
16
|
|
17
|
+
|
18
|
+
|
15
|
-
|
19
|
+
次に、ループの中身を関数にします。
|
16
20
|
|
17
21
|
|
18
22
|
|
19
|
-
|
23
|
+
カウントアップの部分が戻り値になります。
|
24
|
+
|
25
|
+
通常の関数はxの値を保持することができませんので、毎回引数にいれて更新する必要があります。
|
20
26
|
|
21
27
|
|
22
28
|
|
@@ -44,11 +50,9 @@
|
|
44
50
|
|
45
51
|
|
46
52
|
|
47
|
-
|
53
|
+
さらに、クロージャを使って関数の外部の変数を関数内から利用し、更新します。
|
48
54
|
|
49
|
-
|
50
|
-
|
51
|
-
|
55
|
+
変数は関数の外部にありますので、関数呼び出しによって初期値にもどることはありません。(と理解してください。)
|
52
56
|
|
53
57
|
|
54
58
|
|
@@ -76,13 +80,11 @@
|
|
76
80
|
|
77
81
|
|
78
82
|
|
79
|
-
|
83
|
+
最後に、変数xを隠すためにfunctionで括ります。
|
80
|
-
|
81
|
-
変数は関数の外部にありますので、関数呼び出しによって初期値にもどることはありません。(と理解してください。)
|
82
84
|
|
83
85
|
|
84
86
|
|
85
|
-
|
87
|
+
質問のコードとほぼ同じになります。
|
86
88
|
|
87
89
|
|
88
90
|
|