回答編集履歴
2
訂正
test
CHANGED
@@ -68,7 +68,7 @@
|
|
68
68
|
|
69
69
|
|
70
70
|
|
71
|
-
上述した解釈で、ご質問にも示される setTimeout の第一引数(コールバック関数)を眺めてください。
|
71
|
+
上述した解釈で、ご質問にも示される ~~setTimeout の第一引数(コールバック関数)~~ __ストップウォッチのコード__ を眺めてください。
|
72
72
|
|
73
73
|
|
74
74
|
|
1
コードの追記と訂正
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は、様々な処理を行うために非同期で実行する処理も多く、結果を受け取る手段として、ブロックの外で宣言する変数が必要になります。
|