Учебник по JS

ГЛАВНАЯ JS Введение JS Куда Вывод JS Заявления JS JS-синтаксис JS-комментарии JS-переменные JS Пусть Константа JS JS-операторы JS-арифметика Назначение JS JS-типы данных JS-функции JS-объекты JS-события JS-строки Строковые методы JS Поиск строки JS Шаблоны строк JS JS-номера Методы номеров JS JS-массивы Методы массива JS Сортировка массива JS Итерация массива JS Константа массива JS JS-даты Форматы даты JS Методы получения даты JS Методы установки даты JS JS-математика JS Случайный JS Булевы значения Сравнение JS JS-условия JS-переключатель JS цикл для Цикл JS для входа Цикл JS для Цикл JS во время Перерыв JS JS-итерации JS-наборы JS-карты JS Typeof Преобразование типов JS JS побитовый JS регулярное выражение JS-ошибки Область JS JS-подъем Строгий режим JS JS это ключевое слово Функция стрелки JS JS-классы JS JSON JS-отладка Руководство по стилю JS Лучшие практики JS JS-ошибки JS-производительность Зарезервированные слова JS

JS-версии

JS-версии JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE/пограничный История JS

JS-объекты

Определения объектов Свойства объекта Методы объекта Отображение объекта Средства доступа к объектам Конструкторы объектов Прототипы объектов Итерации объектов Наборы объектов Карты объектов Ссылка на объект

JS-функции

Определения функций Параметры функции Вызов функции Вызов функции Функция Применить Закрытие функций

JS-классы

Введение в класс Наследование классов Статический класс

JS асинхронный

Обратные вызовы JS JS асинхронный JS-обещания JS асинхронный/ожидание

JS HTML DOM

Дом Введение DOM-методы Документ DOM DOM-элементы DOM HTML DOM-формы ДОМ CSS DOM-анимации События ДОМ Слушатель событий DOM DOM-навигация DOM-узлы Коллекции DOM Списки узлов DOM

Спецификация браузера JS

JS-окно JS-экран Местоположение JS История JS JS-навигатор Всплывающее оповещение JS JS Тайминг JS-куки

JS-веб-API

Введение в веб-API API веб-форм API истории веб-поиска API веб-хранилища API веб-работника API веб-выборки API веб-геолокации

JS АЯКС

Введение в АЯКС AJAX XMLHttp АЯКС-запрос AJAX-ответ XML-файл AJAX АЯКС PHP АЯКС АСП База данных AJAX AJAX-приложения Примеры AJAX

JS JSON

Введение в JSON Синтаксис JSON JSON против XML Типы данных JSON Анализ JSON Строковая JSON JSON-объекты JSON-массивы JSON-сервер JSON PHP JSON HTML JSON JSONP

JS против JQuery

Селекторы jQuery JQuery HTML jQuery CSS JQuery DOM

JS-графика

JS-графика JS Холст JS сюжет JS Chart.js JS Google Диаграмма JS D3.js

JS-примеры

JS-примеры JS HTML DOM JS HTML-ввод HTML-объекты JS HTML-события JS JS-браузер JS-редактор JS-упражнения JS-викторина JS-сертификат

JS-ссылки

Объекты JavaScript HTML DOM-объекты


JavaScript пусть

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

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

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

Переменные, определенные с помощью let, имеют блочную область.

Не может быть повторно объявлен

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

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

С letвами нельзя так:

Пример

let x = "John Doe";

let x = 0;

// SyntaxError: 'x' has already been declared

С varвами можно:

Пример

var x = "John Doe";

var x = 0;

Область блока

До ES6 (2015) у JavaScript были только Global Scope и Function Scope .

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

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

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

Пример

{
  let x = 2;
}
// x can NOT be used here

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

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

Пример

{
  var x = 2;
}
// x CAN be used here

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

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

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

Пример

var x = 10;
// Here x is 10

{
var x = 2;
// Here x is 2
}

// Here x is 2

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

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

Пример

let x = 10;
// Here x is 10

{
let x = 2;
// Here x is 2
}

// Here x is 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;
// Now x is 2

var x = 3;
// Now x is 3

С letповторным объявлением переменной в том же блоке НЕ допускается:

Пример

var x = 2;    // Allowed
let x = 3;    // Not allowed

{
let x = 2;    // Allowed
let x = 3     // Not allowed
}

{
let x = 2;    // Allowed
var x = 3     // Not allowed
}

Повторное объявление переменной с let, в другом блоке, разрешено:

Пример

let x = 2;    // Allowed

{
let x = 3;    // Allowed
}

{
let x = 4;    // Allowed
}

Пусть подъем

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

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

Пример

Хорошо:

carName = "Volvo";
var carName;

Если вы хотите узнать больше о подъеме, изучите главу « Подъем JavaScript» .

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

Значение: использование letпеременной до ее объявления приведет к ReferenceError:

Пример

carName = "Saab";
let carName = "Volvo";