了解!
では「クロージャの応用例:非同期処理での使い方」を、三段階で説明します。
まず 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
setTimeout
の中の関数は すぐには実行されない(1秒後に実行)。3
になってしまう。forループ
i: 0 → 1 → 2 → 3(終了)
↑
1秒後にここで全部 3 を見る