English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В JavaScript все объявления переменных и функций, независимо от места их определения, перемещаются или поднимаются в верхнюю часть текущей области видимости. Это поведение интерпретатора JavaScript, называемоеhoisting(подъем).
Функции, определенные с помощью объявления функции, автоматически поднимаются.
Это означает, что их можно вызывать до их определения.
// Вызов функции до объявления greet(); function greet() { document.getElementById("output").innerHTML = "Hello World"; }Проверьте, посмотрите <</>',
Как вы видите, мы уже вызвалиgreet()функция, но код по-прежнему действует. Это потому, что объявления функций автоматически поднимаются в верхнюю часть.
Подъем - это поведение по умолчанию JavaScript, при котором объявления перемещаются в верхнюю часть.
JavaScript поднимает только объявления, но не инициализацию. Если переменную объявляют и инициализируют после использования, значение будет неопределенным.
document.write(num); // undefined var num; num = 50;Проверьте, посмотрите <</>',
Если переменную объявляют после ее использования, но предварительно ее инициализировали, она вернет это значение:
num = 50; document.write(num); // 50 var num;Проверьте, посмотрите <</>',
использоватьletилиconstНе объявленные переменные и константы.
JavaScript поднимает только объявления, но не инициализацию.
Следующие два примера дают разные результаты:
var x = 1; // Инициализация x var y = 2; // Инициализация y document.write(x + " " + y); // 1 2Проверьте, посмотрите <</>',
var x = 1; // Инициализация x document.write(x + " " + y); // 1 undefined var y = 2; // Инициализация yПроверьте, посмотрите <</>',
ВПример 2:Только объявление (var y) а не инициализация (= 2) поднимается в верх.
Благодаря подъему, y была объявлена до использования, но ее значение не определено, так как инициализация не была поднята.
upper пример понимается как:
var x; // Объявление x var y; // Объявление y // Подъем завершен. x = 1; // Инициализация x document.write(x + " " + y); // 1 undefinedПроверьте, посмотрите <</>',
Подъем (Hoisting) - это неизвестное или игнорируемое поведение JavaScript.
Если вы не понимаете подъем (Hoisting), в вашем коде могут быть ошибки.
Чтобы избежать ошибок, всегда объявляйте все переменные в начале каждого домена.
Внимание:В строгом режиме JavaScript не позволяет использовать переменные, если они не были объявлены.
Вы узнаете больше о "use strict" в следующей главе.