@Peacefulwarriorr

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

var a = 1

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

b()

console.log(a)


Подскажите, пожалуйста, почему консоль выводит именно 1? Если удалить функцию a, то результат меняется и в консоль выводится предопределённое значение - 10
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
WblCHA
@WblCHA
Потому что ты объявил в области видимости функции Б новую переменную А:
function a() {} /* = */ var a = function() {}

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

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

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

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