私はletにブロックスコープがあり、varには機能スコープがあることを理解しています。しかし、私はこのケースでは理解していない、レットを使用して、問題javascriptでvs varを聞かせて
const arr = [1,2,3,4];
for (var i = 0; i < arr.length; i++) {
setTimeout(function() {
console.log(arr[i])
}, 1000);
} // Prints undefined 5 times
const arr = [1,2,3,4];
for (let i = 0; i < arr.length; i++) {
setTimeout(function() {
console.log(arr[i])
}, 1000);
} // Prints all the values correctly
これは、「なぜ動作させるのか」という質問には答えません。 – Amadan
答えAnkitに感謝します。しかし、私はそれがIIFEを使用して動作させる方法を知っています。私はちょうど 'let'がこの仕事をする方法を疑問に思っています。 – Krishna