fruity4pie
@fruity4pie
A

Как работает эта функция?

(function f(){
  function f() {return 1;}
  return f();
  function f() {return 2;}
})();


Почему возвращается 2, а не 1 ?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 3
kreotech
@kreotech
Абстрактно-ориентированный программист
При обычном задании функций, такого вида: function f() {return 1;}
При запуске скрипта браузер сначала ищет все определения используемых функций. А только потом запускает выполнение основного скрипта. Это позволяет в том числе все используемые функции определять после основного тела скрипта.

У вас в скрипте имеется два определения такого вида. И соответственно браузер использует последнее из представленных.
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
"Поднятие"

т.е. Ваш код компилятор исполняет так:

(function f(){
  function f() {return 1;}
  function f() {return 2;}
  return f();
})();


Далее. Javascript синтаксически допускает определение двух функций с одинаковым именем. В этом случае он использует последнее определение.

Собственно поэтому и получается двойка.
Ответ написан
Комментировать
@Azperin
Дилетант
Потому что в любом языке программирования сначала читаются все найденые функции, а у тебя тут тупо перезапись, т.к. имена одинаковые.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы