Задать вопрос
@Peacefulwarriorr

Почему консоль выводит именно это?

var a = 1

function b() {
	a=10
  return
  function a() {}
}

b()

console.log(a)


Подскажите, пожалуйста, почему консоль выводит именно 1? Если удалить функцию a, то результат меняется и в консоль выводится предопределённое значение - 10
  • Вопрос задан
  • 195 просмотров
Подписаться 2 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
WblCHA
@WblCHA
Потому что ты объявил в области видимости функции Б новую переменную А:
function a() {} /* = */ var a = function() {}

Да, ты её обновил после присвоения А нового значения, и даже после ретурна, НО прежде, чем выполнять код, интерпритатор проходится по коду и (не помню правильной формулировки) определяет области видимости и переменные, которые в ней находятся.
То есть на момент выполнения кода, в функции Б присутствует своя переменная А, а если убрать объявление переменной в функции, то будет взята переменная из области видимости выше.

Как-то так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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