記述する順番で関数が動かなくなる理由を知りたい
Q&A
Closed
1つ目のコードは動くのに2つ目のコードが動かない理由を知りたいです。
最近JavaScriptを勉強し始めたものです。
プログラミング自体初めてです。
1つ目のコードは動くのに2つ目のコードが動かない理由を知りたいです。
確かJavaScriptは上に記述されているコードから実行されるが関数はどこで呼び出しても動くと聞きました。実際1つ目の関数は動いています。
該当するソースコード
1つ目
resetBtn.addEventListener("click",()=>{
reset();
})
const reset= ()=>{
//実際はここに処理を記述
}
2つ目
resetBtn.addEventListener("click",reset)
const reset= ()=>{
//実際はここに処理を記述
}
また、2つ目を実行すると以下のようなエラーメッセージが出ます。
Uncaught ReferenceError: Cannot access 'reset' before initialization
自分で試したこと
宣言→呼び出しの順番で記述すれば動きました。
const reset= ()=>{
//実際はここに処理を記述
}
resetBtn.addEventListener("click",reset)
また、アロー関数が問題なのかと思いましたが(動作が普段の関数と違うイメージ)、関数式に戻しても2つ目と同じく動きませんでした。
resetBtn.addEventListener("click",reset)
const reset = function(){
//実際はここに処理を記述
}
追加で知りたいこと
JavaScriptでは(プログラム言語を書くときは)こう言ったことが起こらないようにまとまった宣言のセクション→実行のセクションの順番で書いた方がいいのでしょうか。
質問は初めて利用するので使い方があっているかわかりません。どうかよろしくお願いします。