var messages = ["Check!", "This!", "Out!"];
for (var i = 0; i < messages.length; i++) {
setTimeout(function() {
console.log(messages[i]);
}, i * 1500);
}
// -> prints 3* undefined
for (let i = 0; i < messages.length; i++) {
setTimeout(function() {
console.log(messages[i]);
}, i * 1500);
}
// -> prints out the array
Я понимаю, как работает «var», и я довольно привык к нему - область действия функциональна. Однако утверждение let далеко не ясно. Я понимаю, что имеет блок масштаба, но почему это имеет значение в примере? В этом примере цикл for длится в обоих случаях. Почему вы можете распечатать массив?Как работать в цикле?
http://stackoverflow.com/a/11444416/4028085 – brso05
Что именно вы печать? –
То, что цикл длительное время не имеет значения - JS имеет замыкания. И те, кто ближе к блочным областям, также – Bergi