Тест по JavaScript — Замыкания и область видимости
Что такое замыкание в JavaScript?
- Это функция внутри функции, имеющая доступ к переменным внешней функции
- Это метод объекта
- Это блок кода, который запускается немедленно
- Это стрелочная функция
Как работает лексическая область видимости?
- Видимость переменной определяется местом её объявления в коде
- Переменные доступны везде
- Видимость переменной определяется типом данных
- Область видимости задаётся директивой 'use strict'
Когда функции имеют доступ к переменным внешней функции?
- Только если они объявлены через var
- Только если они глобальные
- Если они находятся в той же области видимости
- Если они переданы как аргументы
Какой тип объявления переменных поднимается вверх (hoisting)?
- let
- const
- var
- none
Можно ли получить доступ к переменной до её объявления?
- Нет, если использовать let/const
- Да, всегда
- Только в глобальной области
- Только внутри объектов
Создаётся ли область видимости при объявлении функции?
- Нет, область видимости создается при вызове
- Да, область видимости создается при объявлении
- Да, функции выполняются сразу
- Нет, функции не видят переменные
Зачем используется замыкание?
- Для изоляции переменных
- Для создания глобальных переменных
- Для оптимизации
- Для создания массивов
Какой оператор чаще всего используется, чтобы вернуть замыкание?
- return
- function
- new
- this
Как называется область видимости, создаваемая if/for блоками?
- global
- function
- block
- module
Какие объявления переменных имеют блочную область видимости?
- let и const
- var
- function
- block
Замыкания могут удерживать ссылку на внешнюю переменную даже после завершения внешней функции?
- true
- false
Какой механизм позволяет функции “запомнить” переменные из внешней области?
- Memory leak
- Hoisting
- Closure
- Garbage collection
Что происходит при каждом вызове функции, в которой есть замыкание?
- Создаётся новая область видимости
- Заменяется глобальная область
- Ничего не происходит
- Все переменные становятся глобальными
Что происходит с переменными, захваченными замыканием?
- Они сохраняются в памяти
- Они теряются
- Они становятся глобальными
- Они пересоздаются каждый раз
Что означает “переменная в замыкании”?
- Объявлена внутри функции и не глобальна
- Создана через var
- Находится в глобальной области
- Это константа
Можно ли использовать замыкания в стрелочных функциях?
- Да
- Нет
- Только если использовать var
- Зависит от браузера
Какие конструкции могут образовывать замыкания?
- function внутри функции
- анонимная функция
- IIFE
- все варианты
Могут ли функции, возвращённые из другой функции, продолжать использовать внешние переменные?
- Нет, они теряют доступ к внешнему scope
- Да, но только через this
- Да, полностью
- Только глобальные переменные
Что произойдёт при попытке доступа к переменной вне её области видимости?
- undefined
- TypeError
- ReferenceError
- null
Как сохранить переменную в памяти после завершения функции?
- Объявление через var
- Наличие this
- Передача как аргумента
- Создание в замыкании