В JavaScript выполнение кода происходит в 2 этапа. На первом шаге он читается, и место зарезервировано для переменных (изначально значение undefined
) и функций. На втором этапе это выполняется построчно.
А также я прочитал, что переменные, объявленные без ключевого слова var
, установлены как Global
переменных.
Так что, если я распечатаю переменную до ее определения внутри функции, она должна вывести undefined
. Как в коде ниже:
b();
console.log(a);
console.log(d);
var a = 'Hello World!';
function b() {
console.log(c);
console.log('Called b!');
var c = "variable c is printed";
console.log(c);
console.log(d);
d = "Variable d is printed";
}
Я ожидаю, что результат будет:
undefined
Called b!
variable c is printed
undefined
Variable d is printed
Но я получаю следующий вывод:
undefined
Called b!
variable c is printed
Uncaught ReferenceError: d is not defined
at b (app.js:12)
at app.js:1
Так что мои сомнениято есть, когда вызывается функция b
, то на первом этапе выполнения кода переменной d
должны быть заданы пробел и значение undefined
изначально. И тогда выполнение должно начинаться построчно на втором этапе.