объявления функций поднимаются в первую очередь, чем обычная инициализация переменной.
Переменные, объявленные с var
, показывают подъем.Объявление a
идет в верхнюю часть области видимости, но ему присваивается значение 2
в строке, в которой оно написано.
Объявление функции, т. Е. function a(){};
, объявляет значение, а также присваивает значение функции вверхняя часть объема.Итак, что происходит в первом примере:
var a = function(){};
a = 2;
console.log(typeof a)
Во втором примере переменная инициализируется функцией.Но var a
не меняет a
с функции на undefined
var a = function(){};
a; //this doesnot change a
console.log(typeof a);