В этом руководстве вы узнаете о подъеме JavaScript с помощью примеров.
Подъем в JavaScript - это поведение, при котором перед объявлением можно использовать функцию или переменную. Например,
// using test before declaring console.log(test); // undefined var test;
Вышеупомянутая программа работает, и результат будет неопределенным. Вышеупомянутая программа ведет себя как
// using test before declaring var test; console.log(test); // undefined
Поскольку переменная test только объявлена и не имеет значения, ей undefined
присваивается значение.
Если вы хотите узнать больше о переменных, посетите Переменные JavaScript.
Примечание . При подъеме, хотя кажется, что объявление переместилось вверх в программе, на самом деле происходит то, что объявления функций и переменных добавляются в память на этапе компиляции.
Переменный подъем
В терминах переменных и констант, ключевое слово var
поднято и let
и const
не допускает подъем.
Например,
// program to display value a = 5; console.log(a); var a; // 5
В приведенном выше примере переменная a используется перед ее объявлением. И программа работает и отображает вывод 5. Программа ведет себя как:
// program to display value var a; a = 5; console.log(a); // 5
Однако в JavaScript инициализации не поднимаются. Например,
// program to display value console.log(a); var a = 5;
Вывод
неопределенный
Вышеупомянутая программа ведет себя как:
var a; console.log(a); a = 5;
Только объявление перемещается в память на этапе компиляции. Следовательно, значение переменной a связано с undefined
тем, что a печатается без его инициализации.
Кроме того, когда переменная используется внутри функции, она поднимается только в верхнюю часть функции. Например,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Вывод
привет Uncaught ReferenceError: b не определен
В приведенном выше примере переменная b поднимается в начало функции greet
и становится локальной переменной. Следовательно, b доступен только внутри функции. b не становится глобальной переменной.
Чтобы узнать больше о локальных и глобальных переменных, посетите JavaScript Variable Scope.
Примечание . При подъеме объявление переменной доступно только в непосредственной области видимости.
Если переменная используется с let
ключевым словом, эта переменная не поднимается. Например,
// program to display value a = 5; console.log(a); let a; // error
Вывод
Uncaught ReferenceError: невозможно получить доступ к 'a' до инициализации
При использовании let
сначала необходимо объявить переменную.
Функция подъема
Функция может быть вызвана перед ее объявлением. Например,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Вывод
Всем привет
В приведенной выше программе функция greet
вызывается перед ее объявлением, и программа показывает результат. Это связано с подъемом.
Однако, когда функция используется как выражение , возникает ошибка, потому что поднимаются только объявления. Например;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Вывод
Uncaught ReferenceError: приветствие не определено
Если бы var
он использовался в вышеуказанной программе, ошибка была бы такой:
Uncaught TypeError: приветствие не является функцией
Примечание . Как правило, подъем не выполняется в других языках программирования, таких как Python, C, C ++, Java.
Подъем может привести к нежелательным результатам в вашей программе. И лучше всего сначала объявить переменные и функции, прежде чем их использовать, и избегать подъема.
В случае переменных лучше использовать let
чем var
.