странное поведение в функции подъема - PullRequest
0 голосов
/ 06 октября 2018

Я написал скрипт ниже и выполнял его в блокноте.

baz();

var baz = function(){
  console.log("Hello World");
}

Когда я пытался выполнить скрипт выше, я получал исключение ниже.Я знаю, это выражение происходит потому, что подъем не действителен для выражений функций.

/*
Exception: TypeError: baz is not a function
@Scratchpad/1:1:1
*/

Теперь я заменил имя функции 'baz' на 'say_hello', и снова запустил приложение, оно работает нормальнобез исключенияЕсть ли причина для такого поведения?

say_hello();

var say_hello = function(){
  console.log("Hello World");
}

1 Ответ

0 голосов
/ 06 октября 2018

say_hello();

function say_hello(){
  console.log("Hello World");
}

Это тот, который действительно отлично работает без исключения

Причина:

JavaScript только поднимает объявления (объявления переменных и функций), но не инициализации

Если переменная объявляется и инициализируется после ее использования, значение будет неопределенным.Например:

console.log(num); // Returns undefined 
var num;
num = 6;

Если вы объявите переменную после ее использования, но предварительно инициализируете ее, она вернет значение:

num = 6;
console.log(num); // returns 6
var num;

Для получения дополнительной информации: ТолькоОбъявления подняты

...