Scope & Closures Flashcards
По книге "Область видимости и замыкания".
Программе дает состояние возможность…
хранить значения и извлекать значения из переменных.
Компиляция программы проходит в три шага:
1) Разбиение на лексемы
2) Парсинг
3) Генерация кода
Область видимости - это …
Набор правил поиска переменных по их идентификатору.
Лексическая область видимости — это…
область видимости, которая определена во время разбора на лексемы.
Термин IIFE означает…
Immediately (немедленно) Invoked (вызываемое) Function (функциональное) Expression (выражение).
Запись шаблона IIFE выглядит так:
( function( ) { … } ) ( ) Или
function( ) { … } ( )
Ключевое слово let
включает объявление переменной в область видимости блока, в котором оно содержится.
Ключевое слово const
также создает блочную область видимости. Его значение зафиксировано.
Термин поднятие (hoisting) - означает, что…
объявление (переменных и функций) в области видимости происходит до выполнение самого кода.
Замыкание — это когда функция…
умеет запоминать и имеет доступ к лексической области видимости даже тогда, когда вызывается вне своей лексической области видимости.
Что является примерами замыкания?
Таймеры, обработчики событий, Ajax-запросы и любые задачи, включающие колбэк-функции.
Пример цикла + замыкание:
for (var i = 0; i <= 5; i++) { ( function ( j ) { setTimeout( function timer( ) { console.log( j ); }, j * 1000) } ) ( i ); }
Пример цикла + замыкание (с использованием синтаксиса ES6):
for (let i = 0; i <= 5; i++ { setTimeout( function timer( ) { console.log( i ); }, i * 1000); }
Требования, которые должны выполняться для шаблона модуля:
1) Должна быть внешняя окружающая функция и она должна быть вызвана хотя бы раз.
2) Окружающая функция должна возвращать хотя бы одну внутреннюю функцию, для того, чтобы у этой внутренней функции было замыкание на приватную область видимости и был доступ и/или возможность изменения ее внутреннего состояния.