Выбор ответа Junior Области видимости и замыкания обновлено
Зачем нужна IIFE
Вопрос
Зачем до появления let и ES-модулей повсеместно писали (function () { ... })()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Чтобы создать свою функциональную область и не засорять глобальную. Немедленно вызываемая функция (IIFE) создаёт свою область: переменные внутри не становятся глобальными и не конфликтуют с другими скриптами.
Варианты ответа
- Чтобы код выполнялся асинхронно, после загрузки страницы
- Чтобы создать свою функциональную область и не засорять глобальнуюправильный ответ
- Чтобы функция выполнилась быстрее за счёт оптимизаций движка
- Чтобы получить доступ к
thisглобального объекта в строгом режиме
Разбор
Немедленно вызываемая функция (IIFE) создаёт свою область: переменные внутри не становятся глобальными и не конфликтуют с другими скриптами. На этом строился «модульный паттерн» с приватным состоянием через замыкание. Выполняется IIFE синхронно, сразу на месте. Ускорения она не даёт. С this она скорее мешает: в строгом режиме this внутри обычного вызова равен undefined. Сейчас ту же задачу решают блоки с let/const и модули.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.