ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ

Базовый JavaScript

JS Учебник JS Синтаксис JS Переменные JS Операторы JS If Условия JS Циклы JS Строки JS Числа JS Функции JS Объекты JS Даты JS Массивы JS Наборы JS Карты JS Математические JS RegExp JS Типы данных JS Ошибки JS Дебагинг JS События JS Программирование JS Справочники JS UTF-8 Характеры

JS Расширенный

JS Версии JS Функции JS Объекты JS Классы JS Итерации JS Промисы JS Модули JS HTML DOM JS Окна JS Web API JS AJAX JS JSON JS jQuery JS Графика JS Примеры JS Объекты

JavaScript. Уроки W3Schools для начинающих на русском языке

Ua En Es De Fr

JavaScript Ключевое слово Let

Ключевое слово let было введено в ES6 (2015).

Переменные, определённые с помощью let нельзя повторно объявить.

Переменные, определённые с помощью let должны быть объявлены перед использованием.

Переменные, определённые с помощью let имеют область действия блока.

Нельзя повторно объявить

Переменные, определённые с помощью let не могут быть объявлены повторно.

Вы не можете случайно повторно объявить переменную.

С помощью let вы не сможете этого сделать:

Пример

let x = "John Doe";

let x = 0;

// SyntaxError: 'x' вже було оголошено

За допомогою var ви можете:

Пример

var x = "John Doe";

var x = 0;

Область действия блока

До ES6 (2015) в JavaScript были только Global Scope (Глобальная область действия) и Function Scope (Область действия функции).

ES6 представил два важных новых ключевых слова JavaScript: let и const.

Эти два ключевых слова обеспечивают Block Scope (область действия блока) в JavaScript.

К переменным, объявленным внутри блока { }, нельзя получить доступ вне блока:

Пример

{
  let x = 2;
}
// x НЕ может быть использовано здесь

Переменные, объявленные с помощью ключевого слова var, не могут иметь область действия блока.

Переменные, объявленные внутри блока { }, могут быть доступны вне блока.

Пример

{
  var x = 2;
}
// x МОЖНО использовать здесь

Повторное объявление переменных

Повторное объявление переменной с помощью ключевого слова var может вызвать проблемы.

Повторное объявление переменной внутри блока также приведёт к повторному объявлению переменной вне блока:

Пример

var x = 10;
// Здесь x равно 10

{
var x = 2;
// Здесь x равно 2
}

// Здесь x равно 2
Попробуйте сами »

Повторное объявление переменной с помощью ключевого слова let может решить эту проблему.

Повторное объявление переменной внутри блока не приведёт к повторному объявлению переменной внутри блока:

Пример

let x = 10;
// Здесь x равно 10

{
let x = 2;
// Здесь x равно 2
}

// Здесь x равно 10
Попробуйте сами »

Поддержка браузерами

Ключовое слово let не полностью поддерживается в Internet Explorer 11 или более ранней версии.

В следующей таблице указаны первые верси браузера с полной поддержкой ключевого слова let:

Chrome 49 Edge 12 Firefox 44 Safari 11 Opera 36
Mar, 2016 Jul, 2015 Jan, 2015 Sep, 2017 Mar, 2016

Повторное объявление

Повторное объявление переменной JavaScript с помощью var разрешено в любом месте программы:

Пример

var x = 2;
// Теперь x равно 2

var x = 3;
// Теперь x равно 3
Попробуйте сами »

С помощью let повторное объявление переменной в том же блоке ЗАПРЕЩЕНО:

Пример

var x = 2;    // Разрешено
let x = 3;    // Не разрешено

{
let x = 2;    // Разрешено
let x = 3     // Не разрешено
}

{
let x = 2;    // Разрешено
var x = 3     // Не разрешено
}

Повторное объявление переменной с помощью let в другом блоке РАЗРЕШЕНО:

Пример

let x = 2;    // Разрешено

{
let x = 3;    // Разрешено
}

{
let x = 4;    // Разрешено
}
Попробуйте сами »

Подъём (хостинг) Let

Переменные, определённые с помощью var, поднимаются вверх и могут быть инициализированы в любое время.

Важно: вы можете использовать переменную до объявления:

Пример

Это OK:

carName = "Volvo";
var carName;
Попробуйте сами »

Если вы хотите узнать больше о подъёме (хостинге), выучите раздел JavaScript Хостинг.

Переменные, определённые с помощью let также поднимаются в верхнюю часть блока, но не инициализируются.

Важно: использование переменной let перед её объявлением приведёт к ошибке ReferenceError:

Пример

carName = "Saab";
let carName = "Volvo";
Попробуйте сами »