了解!

では「クロージャの応用例:非同期処理での使い方」を、三段階で説明します。

まず 1段階目(クロージャなし・問題が起きる例) からいきます。


✅ 1段階目:非同期処理での問題(クロージャなし)


【コード例】ファイル名: closure-async-step1.js

//for文で0から2までの数字を順番に表示したい(1秒ごと)
for (var i = 0; i < 3; i++) {
  //setTimeoutで1秒後に実行する関数を登録
  setTimeout(function() {
    //iの値を表示
    console.log(i);
  }, 1000);
}


🟥 【実行結果】

3
3
3


🟢 【なぜこうなる?】


🟣 【図で説明】

forループ
i: 0 → 1 → 2 → 3(終了)
           ↑
  1秒後にここで全部 3 を見る