回答編集履歴

2

訂正

2020/02/13 22:21

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
 
70
70
 
71
- 上述した解釈で、ご質問にも示される setTimeout の第一引数(コールバック関数)を眺めてください。
71
+ 上述した解釈で、ご質問にも示される ~~setTimeout の第一引数(コールバック関数)~~ __ストップウォッチのコード__ を眺めてください。
72
72
 
73
73
 
74
74
 

1

コードの追記と訂正

2020/02/13 22:21

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

test CHANGED
@@ -72,6 +72,46 @@
72
72
 
73
73
 
74
74
 
75
- 関数内で宣言すると、カウントできません。
75
+ ~~関数内で宣言すると、カウントできません。~~
76
+
77
+ 次のようなコードになります。
78
+
79
+ ```javascript
80
+
81
+ const start = document.getElementById('start');
82
+
83
+ // 1)メモリ番地を(とりあえず)確保
84
+
85
+ let startTime;
86
+
87
+ function countUp() {
88
+
89
+
90
+
91
+ // 3)以降繰り返し. startTime のメモリを参照し格納済みの値を読む
92
+
93
+ console.log(Date.now() - startTime);
94
+
95
+
96
+
97
+ setTimeout( () => {
98
+
99
+ countUp(); // 再帰呼び出し
100
+
101
+ }, 10);
102
+
103
+ }
104
+
105
+ start.addEventListener('click', () => {
106
+
107
+ // 2)startTime のメモリに Date値を格納
108
+
109
+ startTime = Date.now();
110
+
111
+ countUp();
112
+
113
+ });
114
+
115
+ ```
76
116
 
77
117
  JavaScriptは、様々な処理を行うために非同期で実行する処理も多く、結果を受け取る手段として、ブロックの外で宣言する変数が必要になります。