Может кто-нибудь знает, почему следующий код js выводит "1"? Как он работает? Так как я не понимаю, для чего там написан return;, и функция переопределяет а или нет
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
Ответ
Потому что объявление функции всплывает.
var a = 1;
function b() {
function a() {}
a = 10;
return;
}
b();
console.log(a);
После этого ты берёшь имя a, которое обозначает функцию, и используешь в качестве переменной, в которую помещаешь 10. Фактически, ссылка на функцию теряется, но ты её нигде и не используешь. Выходит нечто такое:
var a = 1;
function b() {
var a = function a() {}
a = 10;
return;
}
b();
console.log(a);
Ну и естественно, функция меняла внутреннюю переменную, а внешняя как была равна 1, так и осталась.
А return тут и не при чём вовсе.
Комментариев нет:
Отправить комментарий