2015-08-03 3 views
2
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 длится в обоих случаях. Почему вы можете распечатать массив?Как работать в цикле?

+0

http://stackoverflow.com/a/11444416/4028085 – brso05

+0

Что именно вы печать? –

+0

То, что цикл длительное время не имеет значения - JS имеет замыкания. И те, кто ближе к блочным областям, также – Bergi

ответ

1

let позволяет объявлять переменные, которые ограничены по объему блоком, выражением или выражением , на котором оно используется. В отличие от ключевое слово var, которое определяет переменную глобально или локально для всей функции независимо от области блока.

Проверить здесь более подробная информация https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let

 Смежные вопросы

  • Нет связанных вопросов^_^