Страницы

Поиск по вопросам

четверг, 18 октября 2018 г.

Зачем нужен return

Может кто-нибудь знает, почему следующий код 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 тут и не при чём вовсе.

Комментариев нет:

Отправить комментарий