【週刊ドットインストール】 考える力を養うための新クラス『データで学ぶアルゴリズム』を256timesでリリース!
お世話になります。 質問させていただきます。
下記の部分についての質問です。
function updateTimer() { const timeLeft = startTime + timeLimit - Date.now(); timerLabel.textContent = (timeLeft / 1000).toFixed(2); const timeoutId =setTimeout(() => { updateTimer(); }, 10); if (timeLeft < 0) { isPlaying = false; clearTimeout(timeoutId); timerLabel.textContent = "0.00"; setTimeout(() => { showResult(); }, 100); target.textContent = "click to replay"; } } function showResult() { const accuracy = score + miss === 0 ? 0 : score / (score + miss) * 100; alert(`${score} letters, ${miss} misses, ${accuracy.toFixed(2)}% accurcy!`); }
上記の
setTimeout(() => { showResult(); }, 100);
は、
function showResult() {…
を定義する前に記述されています。時系列で考えるとエラーになるのではと思いましたが、問題なく作動しています。その後にある実際に updateTimer()を呼び出すwindow.addEventListener("click", () => {…などともいろいろ順番を入れ替えてみましたが、どの順番でも問題なく作動しました。
今回、時系列が気になったのは、constやletなどの定義は時系列が正しくないとエラーになるという経験をしていたからです。しかし、前半部分のconstやletなどを最下段に持ってきても問題なく作動しました。
このことから個人的解釈としては、
{ const accuracy = score + miss === 0 ? 0 : score / (score + miss) * 100; alert(`${score} letters, ${miss} misses, ${accuracy.toFixed(2)}% accurcy!`); }
のようなブロック内ではコードが時系列通りでないとエラーとなり、
や
window.addEventListener("click", () => {…
ブロック外で定義されたconstやlet
などについては時系列の概念は無いので順不同でも作動する。
と考えましたが、この解釈は合っておりますでしょうか? 理解の誤りや理解しやすい考え方などがありましたらご教授をお願いします。
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
お世話になります。
質問させていただきます。
下記の部分についての質問です。
上記の
は、
を定義する前に記述されています。時系列で考えるとエラーになるのではと思いましたが、問題なく作動しています。その後にある実際に updateTimer()を呼び出すwindow.addEventListener("click", () => {…などともいろいろ順番を入れ替えてみましたが、どの順番でも問題なく作動しました。
今回、時系列が気になったのは、constやletなどの定義は時系列が正しくないとエラーになるという経験をしていたからです。しかし、前半部分のconstやletなどを最下段に持ってきても問題なく作動しました。
このことから個人的解釈としては、
のようなブロック内ではコードが時系列通りでないとエラーとなり、
や
や
ブロック外で定義されたconstやlet
などについては時系列の概念は無いので順不同でも作動する。
と考えましたが、この解釈は合っておりますでしょうか?
理解の誤りや理解しやすい考え方などがありましたらご教授をお願いします。