fruity4pie
@fruity4pie
A

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

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


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

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

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

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


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

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

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

Войти через TM ID
Похожие вопросы
Biganto Москва
от 130 000 до 130 000 руб.
от 2 500 до 4 000 usd.
HTML Academy Москва
от 85 000 до 100 000 руб.
15 авг. 2018, в 17:20
2000 руб./за проект
15 авг. 2018, в 14:46
600 руб./за проект