В JavaScript все объявления переменных и функций в глобальной перемещаются или поднимаются в верхнюю часть их текущей области исполнения независимо от того, где они определены. Это стандартное поведение интерпретатора JavaScript, которое называется «подъемом» (hoisting). В этом разделе мы подробнее рассмотрим, как это работает.

Что делает функция Hoisting

Функции, которые определены с помощью объявления функции, автоматически «поднимаются» (hoisted). Это означает, что их можно вызвать до того, как они будут определены. Давайте разберемся с этим на примере:

// Вызываем функцию до ее объявления
sayHello(); // Выводит: Hello, I'm hoisted!

function sayHello() {
    alert("Hello, I'm hoisted!");
}

Как видите, мы вызвали функцию sayHello() до ее определения, но код все еще работает. Это связано с тем, что объявленные функции автоматически поднимаются вверх.

Как работает функция Hoisting с переменными

Точно так же объявленные переменные автоматически поднимаются в верхнюю часть их текущей области видимости. Это означает, что если переменная объявлена внутри функционального блока, она будет перемещена в верхнюю часть функции, но если она объявлена вне какой-либо функции, она будет перемещена в верхнюю часть скрипта и станет доступна глобально. Посмотрите на следующий пример, чтобы понять, как это работает:

str = "Hello World!";
alert(str); // Выводит: Hello World!
var str;

Тем не менее, JavaScript только поднимает объявления, а не инициализацию. Это означает, что если переменная объявлена и инициализирована после ее использования, значение будет undefined. Например:

alert(str); // Выводит: undefined
var str;
str = "Hello World!";

Вот еще один пример, демонстрирующий поведение переменной в JavaScript:

var i = 1; // Объявляем и инициализируем i
alert(i + ", " + j); // Выводит: 1, undefined
var j = 2; // Объявляем и инициализируем j

var x = 5; // Объявляем и инициализируем x
var y; // Declare y
alert(x + ", " + y); // Выводит: 5, undefined
y = 10; // Инициализируем y

var a = 3; // Объявляем и инициализируем a
b = 6; // Инициализируем b
alert(a + ", " + b); // Выводит: 3, 6
var b; // Declare b

var u = 4; // Объявляем и инициализируем u
alert(u + ", " + v); // Выводит: 4, undefined
var v; // Declare v
v = 8; // Инициализируем v

«Подъем переменных» может показаться немного запутанным на первый взгляд, но если вы внимательно изучите эти примеры, вы легко поймете, как это работает.

Рекомендуется объявлять переменные в верхней части текущей области видимости из-за поведения подъема. Кроме того, использование переменной без объявления не допускается в строгом режиме JavaScript.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.