Introduced in JavaScript 1.7
Аннотация
Объявляет локальную переменную в области видимости блока, с присвоением значения по необходимости.
Синтаксис
let в контексте определения:
let переменная1 [= значение1] [, переменная2 [= значение2]] [, ..., переменнаяN [= значениеN]];
let в контексте выражения:
let (переменная1 [= значение1] [, переменная2 [= значение2]] [, ..., переменнаяN [= значениеN]]) выражение;
let в контексте инструкции:
let (переменная1 [= значение1] [, переменная2 [= значение2]] [, ..., переменнаяN [= значениеN]]) инструкция;
Параметры
| Параметр | Описание |
|---|---|
переменная1, переменная2, …, переменнаяN |
Имя переменной. Может быть любым допустимым идентификатором. |
значение1, значение2, …, значениеN |
Начальное значение переменной. Может быть любым допустимым выражением. |
выражение |
Любое допустимое выражение. |
инструкция |
Любая допустимая инструкция. |
Описание
let позволяет объявлять переменные, ограничивая их область видимости блоком, инструкцией или выражением в котором используется. В отличие от ключевого слова var, которое определяет переменную глобально или локально во всей функции независимо от блочной области видимости.
Блочная область видимости
Переменные, объявленные через let "поднимаются" в начало блока.
Переобъявление той же самой переменной в той же самой блочной области видимости вызывает ошибку типа TypeError.
if (x) {
let foo;
let foo; // Ошибка TypeError.
}
Однако, данное ограничение не относится к телу функции!
function do_something() {
let foo;
let foo; // Здесь все прекрасно работает.
}
TypeError. Если Вы используете это поведение, Вам следует воздержаться от этого!Вы можете столкнуться с ошибками в инструкциях switch из-за того, что в нем только один низлежащий блок.
switch (x) {
case 0:
let foo;
break;
case 1:
let foo; // Ошибка TypeError из-за переобъявления.
break;
}
Примеры
Выражение с let ограничивает область видимости объявленной переменной в рамках этого выражения.
var a = 5; let(a = 6) alert(a); // 6 alert(a); // 5
Ключевое слово let, использованное внутри блока, ограничивает область видимости переменной в пределах этого блока. Обратите внимание на отличие от ключевого слова var, область видимости которого ограничено пределами функции, в которой оно было объявлено.
var a = 5;
var b = 10;
if (a === 5) {
let a = 4; // Область видимости внутри блока if
var b = 1; // Область видимости внутри функции
console.log(a); // 4
console.log(b); // 1
}
console.log(a); // 5
console.log(b); // 1
Ключевое слово let можно использовать для связывания переменных с локальной областью видимости циклов вместо использования глобальной переменной (объявленной через var).
for (let i = 0; i<10; i++) {
alert(i); // 1, 2, 3, 4 ... 9
}
alert(i); // i не определена