Задать вопрос
@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 как функция? Это исключение или как это понимать?
  • Вопрос задан
  • 83 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@shsv382
Вообще в JavaScript все это - объекты. Даже функции - это объекты.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Seasle
@Seasle Куратор тега JavaScript
Ваш ответ на вопрос

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

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