前提・実現したいこと
letで宣言した変数がスコープ内で参照できません
他のletで宣言した変数は利用できるのですが理由を知りたいです。
発生している問題・エラーメッセージ
ReferenceError :Can't find variable:startTime
該当のソースコード
JavaScript
1{ 2 let timer = document.getElementById('timer'); 3 let start = document.getElementById('start'); 4 let stop = document.getElementById('stop'); 5 let reset = document.getElementById('reset'); 6 7 let startTime;// setTimeout内の関数でなぜか呼べない 8 let elapsedTime = 0; 9 function countUp(){ 10 setTimeout(function(){ 11 elapsedTime = Date.now() - startTime; 12 console.log(elapsedTime); 13 countUp(); 14 },10); 15 } 16 start.addEventListener('touchstart',function(){ 17 startTime = Date.now(); 18 countUp(); 19 }); 20}
試したこと
- startTimeをvarにすればできる
- elapsedTime はletのままでもOK
- addEventListenerの時点ではstartTime はとれている(console.logで確認)
- startTimeを0で初期化してもNG
- 変数名を変更(startTime→aaa等)にしてもNG
- エラー箇所はデバッグログの行番号で特定済み
補足情報(FW/ツールのバージョンなど)
monacaで開発中
JavaScript初心者です。
varを使えばできるのですが、他の変数はletを使っているのでできればそろえたくて・・・。
回答1件
あなたの回答
tips
プレビュー