質問: Date.now(); countUp(); }); } ``` ### 試したこと * startTimeをvarにすればできる * elapsedTime はletのままでもOK * addEventListenerの時点ではstartTime はとれている(console.logで確認) * startTimeを0で初期化してもNG * 変数名を変更(startTime→aaa等)にしてもNG * エラー箇所はデバッグログの行番号で特定済み ### 補足情報(FW/ツールのバージョンなど) monacaで開発中 JavaScript初心者です。 varを使えばできるのですが、他の変数はletを使っているのでできればそろえたくて・・・。
回答: 一番外側の{}をはずしたら解決しました。 以下、papinianusさんからのコメントでいただいた内容です。 > > {}はブロックスコープをつくります。従って、let startTimeはglobalじゃなくてその無名の{}の中にしか存在しません。 > > startTime = Date.now(); > > のstartTimeや > > elapsedTime = Date.now() - startTime; > > のelapsedTimeでエラーが起こらないのは、その場で変数宣言が起きているからです。(elapsedTime = Date.now() - startTimeの直前にconsole.log(elapsedTime);とするとエラーになるはず) > > > 私の場合、(function(){})();で書くところを、深く考えず{}にしていたのがNGだったようです。 意味を理解して書こうと思います。