Hoisting в JavaScript
- Предыдущая страница Область действия JS
- Следующая страница Строгий режим JS
Hoisting - это defaultManager JavaScript, который поднимает объявления к верху.
Декларации в JavaScript поднимаются
В JavaScript можно声明 переменную после ее использования.
иначе говоря, можно использовать переменную до ее объявления.
Пример 1 сПример 2 результаты одинаковы:
Пример 1
x = 5; // Assign 5 to x elem = document.getElementById("demo"); // Find the element elem.innerHTML = x; // Показать x в элементе var x; // Объявить x
Пример 2
var x; // Объявить x x = 5; // Assign 5 to x elem = document.getElementById("demo"); // Find the element elem.innerHTML = x; // Показать x в элементе
Чтобы понять это, вам нужно понять термин "hoisting".
Hoisting - это defaultManager JavaScript, который поднимает все объявления к верху текущего контекста (к верху текущего скрипта или текущей функции).
ключевые слова let и const
используя let
или const
Переменные и константы, объявленные, не поднимаются!
Пожалуйста, JS Let / Const Читайте больше о let и const здесь.
Инициализация в JavaScript не поднимается
JavaScript поднимает только декларации, а не инициализации.
Пример 1 сПример 2 результаты различаются:
Пример 1
var x = 5; // Initialize x var y = 7; // Инициализация y elem = document.getElementById("demo"); // Find the element elem.innerHTML = x + " " + y; // Show x and y
Пример 2
var x = 5; // Initialize x elem = document.getElementById("demo"); // Find the element elem.innerHTML = x + " " + y; // Show x and y var y = 7; // Инициализация y
Может ли быть правдой, что в последнем примере y по-прежнему неопределен?
Это потому, что только декларация (var y) а не инициализация (=7) поднимается наверх.
Благодаря hoisting, y была объявлена до ее использования, но поскольку инициализация не была поднята, значение y по-прежнему неопределено.
Пример 2 также аналогичен:
Пример
var x = 5; // Initialize x var y; // Declare y elem = document.getElementById("demo"); // Find the element elem.innerHTML = x + " " + y; // Show x and y y = 7; // Assign 7 to y
Объявляйте свои переменные в начале!
Hoisting (для многих разработчиков) — это неизвестное или игнорируемое поведение JavaScript.
Если разработчик не понимает hoisting, в программе могут быть ошибки (bug).
Чтобы избежать ошибок, всегда объявляйте все переменные в начале каждой области действия.
Поскольку именно так JavaScript интерпретирует код, поддерживайте эту хорошую привычку.
Строгий режим JavaScript не позволяет использовать переменные без их предварительного объявления.
Познакомьтесь с этим в следующей главе:use strict。
- Предыдущая страница Область действия JS
- Следующая страница Строгий режим JS