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
Дилетант
Потому что в любом языке программирования сначала читаются все найденые функции, а у тебя тут тупо перезапись, т.к. имена одинаковые.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект