@letmesp

Переменная и функция с одним именем. Что выведется?

Подскажите, пожалуйста, почему такой код выводит значение 5

var a = 5;
function a() {
	return 10;
}


А такой код выводит значение 10?
var a;
function a() {
	return 10;
}


Я понимаю, что из-за всплытия переменная a объявляется раньше функции с таким же именем и поэтому (если она не инициализирована) то выведется функция.
А если инициализирована то почему выведется она, а не функция? Инициализация будет позже чем function declaration?

P.S. я знаю про let и const, вопрос не в этом
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
! Отказ от ответственности: var больше не стоит использовать, вообще. Только let и const.

Ответ:
var a = 5; — тут происходит 2 вещи:
  1. сначала декларация (уплывает на самый верх)
  2. потом присваивание.


декларация function a() уплывает наверх выше назначения a = 5, которое оказывается после всех деклараций. Можно даже так:
function a() {
  return 10;
}

a = 5;
Это, по сути, и происходит в 1-м примере.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы