JavaScript Подъемный
Подъем - это стандартное поведение JavaScript, заключающееся в перемещении объявлений вверх.
Объявления JavaScript подняты
В JavaScript переменную можно объявить после того, как она была использована.
Другими словами; переменную можно использовать до ее объявления.
Пример 1 дает тот же результат, что и Пример 2:
Пример 1
x = 5; // Присваиваем 5 x
elem = document.getElementById("demo"); // Находим элемент
elem.innerHTML = x;
// Отображаем x в элементе
var x; // Объявить x
Попробуйте сами »
Пример 2
var x; // Объявить x
x = 5; // Присваиваем 5 x
elem = document.getElementById("demo"); // Находим элемент
elem.innerHTML = x;
// Отображаем x в элементе
Попробуйте сами »
Чтобы понять это, вы должны понимать термин "подъем".
Подъем - это стандартное поведение JavaScript, заключающееся в перемещении всех объявлений в верхнюю часть текущей области видимости (в верхнюю часть текущего скрипта или текущей функции).
Ключевые слова let и const
Переменные, определенные с помощью let и const,
поднимаются в верхнюю часть блока, но не инициализируются.
Значение: блоку кода известно о переменной, но ее нельзя использовать, пока она не будет объявлена.
Использование let переменной до ее объявления
приведет к созданию файла ReferenceError.
Переменная находится во "временной мертвой зоне" от начала блока до его объявления:
Использование const переменной до ее объявления является синтаксической ошибкой,
поэтому код просто не запускается.
Узнайте больше о let и const в JS Let / Const.
Инициализации JavaScript не поднимаются
JavaScript поднимает только объявления, но не инициализацииp>
Пример 1 никак not дают тот же результат, как иПример 2:
Пример 1
var x = 5; // Инициализируем x
var y = 7; // Инициализируем y
elem = document.getElementById("demo"); // Находим элемент
elem.innerHTML = x + " " + y; // Отображение x и y
Попробуйте сами »
Пример 2
var x = 5; // Инициализируем x
elem = document.getElementById("demo"); // Находим элемент
elem.innerHTML = x + " " + y; // Отображение x и y
var y = 7; // Инициализируем y
Попробуйте сами »
Имеет ли смысл, что y не определено в последнем примере?
Это потому, что наверх поднимается только объявление (var y), а не инициализация (=7).
Из-за подъема y был объявлен до его использования, но поскольку инициализации не поднимаются, значение y не определено.
Пример 2 совпадает с записью:
Пример
var x = 5; // Инициализируем x
var y; // Объявить y
elem = document.getElementById("demo"); // Находим элемент
elem.innerHTML = x + " " + y; // Отображаем x и y
y = 7; // Присваиваем 7 к y
Попробуйте сами »
Объявите свои переменные наверху!
Подъем - это (для многих разработчиков) неизвестное или недооцененное поведение JavaScript.
Если разработчик не понимает подъема, программы могут содержать ошибки (errors).
Чтобы избежать ошибок, всегда объявляйте все переменные в начале каждой области.
Так как JavaScript интерпретирует код именно так, это всегда хорошее правило.
JavaScript в строгом режиме не позволяет использовать переменные, если они не объявлены. Изучите "используйте строгое" в следующей главе.
