Подтвердить что ты не робот

Когда следует использовать let и var?

РЕДАКТИРОВАТЬ: Пожалуйста, прочитайте вопрос! Я уже знаю разницу. Это не дубликат.

Очевидно, что сейчас я всегда должен использовать ключевое слово var, поскольку let не поддерживается во всем.

Когда ключевое слово let имеет лучшую поддержку (скажем, я пишу приложение Node через пару лет, используя Harmony), когда следует использовать ключевое слово let и ключевое слово var?

Я понимаю разницу - var - это область видимости функции, а let - для определения области кадра, но я ищу что-то вроде "всегда использую ключевое слово let" или "используйте ключевое слово var верхняя часть функций, но ключевое слово let в блоках, например, для циклов".

4b9b3361

Ответ 1

Я бы сказал, что вы должны, как принцип, использовать let всякий раз, когда это неудобно делать. Например:

for (let i = 0; i < 100; i++) {
    // Do something
}

if (condition) {
    let msg = a + b + c;
    console.log(msg);
    alert(msg);
}

Преимущества этого подхода:

  • Меньший риск переопределения использования какой-либо глобальной переменной для чего-то еще
  • Меньший риск утечки памяти из-за переменных, находящихся в памяти, после того, как они стали неуместными.

Ответ 2

Используйте let как общее правило, и var иногда.

Обзор области обзора является стандартным и наиболее читаемым выбором и облегчит отладку. Охват кадра позволяет легко увидеть, где именно находится переменная. Обнаруживание функций делает вещи намного менее очевидными, и намного проще случайно ввести ошибки с ошибками области.

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

В частности, он помогает справиться с бесконечной проблемой закрытия переменных и не осознавать, что их значение изменится до того, как будет выполнено закрытие:

for (var i = 1; i <= 5; i++) {
  var item = document.createElement("LI");
  item.appendChild(document.createTextNode("Item " + i));

  let j = i;
  item.onclick = function (ev) {
    alert("Item " + j + " is clicked.");
  };
  list.appendChild(item);
}

Ответ 3

Ну, ответ довольно прост для использования var, если вам нужна функция scoping и let, если вам нужна область обзора.