Выбор ответа Junior Области видимости и замыкания обновлено

Зачем нужна IIFE

Вопрос

Зачем до появления let и ES-модулей повсеместно писали (function () { ... })()?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы создать свою функциональную область и не засорять глобальную. Немедленно вызываемая функция (IIFE) создаёт свою область: переменные внутри не становятся глобальными и не конфликтуют с другими скриптами.

Варианты ответа

  1. Чтобы код выполнялся асинхронно, после загрузки страницы
  2. Чтобы создать свою функциональную область и не засорять глобальнуюправильный ответ
  3. Чтобы функция выполнилась быстрее за счёт оптимизаций движка
  4. Чтобы получить доступ к this глобального объекта в строгом режиме

Разбор

Немедленно вызываемая функция (IIFE) создаёт свою область: переменные внутри не становятся глобальными и не конфликтуют с другими скриптами. На этом строился «модульный паттерн» с приватным состоянием через замыкание. Выполняется IIFE синхронно, сразу на месте. Ускорения она не даёт. С this она скорее мешает: в строгом режиме this внутри обычного вызова равен undefined. Сейчас ту же задачу решают блоки с let/const и модули.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.