質問編集履歴
4
引用と分かる様にしました
title
CHANGED
File without changes
|
body
CHANGED
@@ -24,31 +24,35 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
1.このコードではまず即時関数
|
27
|
-
>function() {
|
28
|
-
>var count = 0;
|
27
|
+
> 引用テキストfunction() {var count = 0;
|
29
|
-
|
28
|
+
return function() { // 子関数を返す
|
30
|
-
|
29
|
+
return ++count; // 変数 count は親関数で定義されている
|
31
|
-
|
30
|
+
};
|
32
|
-
|
31
|
+
}();
|
32
|
+
|
33
33
|
が書かれていて、即時関数なので書いた瞬間に実行され、その結果
|
34
34
|
「countUpFromZero」
|
35
35
|
には
|
36
|
+
|
36
|
-
|
37
|
+
>
|
37
|
-
|
38
|
+
function() { // 子関数を返す
|
38
|
-
|
39
|
+
var count = 0;
|
39
|
-
|
40
|
+
return ++count; // 変数 count は親関数で定義されている
|
40
|
-
|
41
|
+
};」
|
42
|
+
|
41
43
|
が入っていると考えたのですが、これは間違っているのでしょうか?
|
42
44
|
|
43
45
|
|
44
46
|
2.「関数countUpFromZero」を1回だけ「countUpFromZero();」で呼び出した時、
|
45
47
|
「countUpFromZero」
|
46
48
|
には
|
47
|
-
|
49
|
+
|
50
|
+
|
48
|
-
>function() { // 子関数を返す
|
51
|
+
> function() { // 子関数を返す
|
49
|
-
|
52
|
+
var count = 0;
|
50
|
-
|
53
|
+
return ++count; // 変数 count は親関数で定義されている
|
51
|
-
|
54
|
+
};」
|
55
|
+
|
52
56
|
が入っているので、この無名関数が実行され、その結果
|
53
57
|
「countUpFromZero」
|
54
58
|
には
|
3
引用文の行頭に>を再度追加いたしました
title
CHANGED
File without changes
|
body
CHANGED
@@ -24,29 +24,31 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
1.このコードではまず即時関数
|
27
|
-
function() {
|
27
|
+
>function() {
|
28
|
-
var count = 0;
|
28
|
+
>var count = 0;
|
29
|
-
return function() { // 子関数を返す
|
29
|
+
>return function() { // 子関数を返す
|
30
|
-
return ++count; // 変数 count は親関数で定義されている
|
30
|
+
>return ++count; // 変数 count は親関数で定義されている
|
31
|
-
};
|
31
|
+
>};
|
32
|
-
}();
|
32
|
+
>}();
|
33
33
|
が書かれていて、即時関数なので書いた瞬間に実行され、その結果
|
34
34
|
「countUpFromZero」
|
35
35
|
には
|
36
|
+
「
|
36
|
-
|
37
|
+
>function() { // 子関数を返す
|
37
|
-
var count = 0;
|
38
|
+
>var count = 0;
|
38
|
-
return ++count; // 変数 count は親関数で定義されている
|
39
|
+
>return ++count; // 変数 count は親関数で定義されている
|
39
|
-
};」
|
40
|
+
>};」
|
40
41
|
が入っていると考えたのですが、これは間違っているのでしょうか?
|
41
42
|
|
42
43
|
|
43
44
|
2.「関数countUpFromZero」を1回だけ「countUpFromZero();」で呼び出した時、
|
44
45
|
「countUpFromZero」
|
45
46
|
には
|
47
|
+
「
|
46
|
-
|
48
|
+
>function() { // 子関数を返す
|
47
|
-
var count = 0;
|
49
|
+
>var count = 0;
|
48
|
-
return ++count; // 変数 count は親関数で定義されている
|
50
|
+
>return ++count; // 変数 count は親関数で定義されている
|
49
|
-
};」
|
51
|
+
>};」
|
50
52
|
が入っているので、この無名関数が実行され、その結果
|
51
53
|
「countUpFromZero」
|
52
54
|
には
|
2
引用部分が分かる様に引用文の行頭に>を付け、引用書籍について記述させて頂きました
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,19 +4,21 @@
|
|
4
4
|
|
5
5
|
尚以下のコード、コード内の日本語は本に書いてあったものをそのまま引用しています。
|
6
6
|
|
7
|
+
引用元「開眼!Javascript p101」
|
8
|
+
|
7
9
|
```javascript
|
8
|
-
var countUpFromZero = function() {
|
10
|
+
>var countUpFromZero = function() {
|
9
|
-
var count = 0;
|
11
|
+
>var count = 0;
|
10
|
-
return function() { // 子関数を返す
|
12
|
+
>return function() { // 子関数を返す
|
11
|
-
return ++count; // 変数 count は親関数で定義されている
|
13
|
+
>return ++count; // 変数 count は親関数で定義されている
|
12
|
-
};
|
14
|
+
>};
|
13
|
-
}(); // countUpFromZero は呼ばれると即時実行し、無名関数を返す
|
15
|
+
>}(); // countUpFromZero は呼ばれると即時実行し、無名関数を返す
|
14
|
-
/* countUpFromZero() に返された子関数はその親関数の変数 count にアクセスする必要がある
|
16
|
+
>/* countUpFromZero() に返された子関数はその親関数の変数 count にアクセスする必要がある
|
15
|
-
ため、それを保持する。countUpFromZero() を実行するたびに return ++count が実行される。
|
17
|
+
>ため、それを保持する。countUpFromZero() を実行するたびに return ++count が実行される。
|
16
|
-
*/
|
18
|
+
>*/
|
17
|
-
console.log(countUpFromZero()); // 出力:1
|
19
|
+
>console.log(countUpFromZero()); // 出力:1
|
18
|
-
console.log(countUpFromZero()); // 出力:2
|
20
|
+
>console.log(countUpFromZero()); // 出力:2
|
19
|
-
console.log(countUpFromZero()); // 出力:3
|
21
|
+
>console.log(countUpFromZero()); // 出力:3
|
20
22
|
```
|
21
23
|
|
22
24
|
|
1
質問について追記をさせて頂きました
title
CHANGED
File without changes
|
body
CHANGED
@@ -52,4 +52,10 @@
|
|
52
52
|
が入ると考えたのですがこれは間違っているのでしょうか?
|
53
53
|
|
54
54
|
3.2の考えがもし合っているのであれば上記コードのs「出力1、出力2、出力3」は間違っている気がするのですが、合っているのでしょうか?
|
55
|
-
実際に上記コードを私がコンソールで実行した所「undefined」と表示されてしまいました・・・
|
55
|
+
実際に上記コードを私がコンソールで実行した所「undefined」と表示されてしまいました・・・
|
56
|
+
|
57
|
+
---以下追記した部分となります---
|
58
|
+
|
59
|
+
私が間違っていると思ったのは、私は出力1の所にcount=1,出力2の所にcount=2,出力3の所にcount=3,がコンソールに表示されると思ったので間違っていると考えました
|
60
|
+
|
61
|
+
あと、上記コードをGoogle developer toolsのconsoleの所に貼り付けてenterキーを押して確かめたところundefinedと表示されてしまいました・・・
|