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

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

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