Объявления функций поднимаются, но все, что связано с присваиванием (=
), не является.Для переводчика ваш первый код эквивалентен
function fun1(){
console.log("Hi");
}
// END OF HOISTING OF FUNCTION DECLARATIONS
console.log(fun1.exp);
fun1.exp = "funnn";
Строка fun1.exp
идет после console.log
, поэтому fun1.exp
равно undefined
при регистрации.
Ваш второйкод эквивалентен
// END OF HOISTING OF FUNCTION DECLARATIONS
// (no hoisting at all here, since there are no function declarations)
console.log(obj.name);
var obj = {
"name" : "Albert"
};
Обычные объекты не поднимаются;только объявления функций (функции, которые используют ключевое слово function
и не имеют =
):