@zlodiak

Глобальный объект является функцией тоже?

Есть следующий код:

const q = 1;

function outer() {
	console.log('outer run')
	const w = 2;
  
  return function inner() {
  	console.log('inner run')
  	const e = 3;
    console.log(q);
  }
}

outer()()


Здесь 3 лексических окружения:
inner() -> outer() -> global

Порядок их создания такой:
1. При вызове inner() для неё создаётся лексическое окружение(ЛО), которое ссылается на более внешнее ЛО(то есть на ЛО outer)
2. При вызове outer() для неё создаётся ЛО, которое ссылается на глобальное ЛО

Проблема в том, что inner() и outer() это функции, а глобальное ЛО это не функция. Почему же глобальное ЛО тоже рассматривается движком js как функция? Это исключение или как это понимать?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@shsv382
Вообще в JavaScript все это - объекты. Даже функции - это объекты.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Seasle
@Seasle Куратор тега JavaScript
\( ゚ヮ゚)/
Ваш ответ на вопрос

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

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