Замыкания и область
видимости
JS fundamentals.
Function declaration, function expression
 Function declaration
 Function expression
Глобальный объект
Виды функций.
Coding Time
Порядок исполнения скриптов
1. Инициализация всех Function Declaration
Порядок исполнения скриптов
Порядок исполнения скриптов
1. Инициализация всех Function Declaration
2. Инициализация всех var
3. Начало выполнения скрипта
Порядок исполнения скриптов
Hoisting(Поднятие)
=
Нюансы поднятия
1. Функциональная область видимости
=
Нюансы поднятия
1. Функциональная область видимости
=
Нюансы поднятия
1. Функциональная область видимости
2. Количество объявлений одной переменной не имеет значения
=
Нюансы поднятия
1. Функциональная область видимости
2. Количество объявлений одной переменной не имеет значения
3. Сначала поднимается function declaration, а затем var
Lexical Environment
(Лексическое окружение)
Lexical Environment
(Лексическое окружение)
Скрытое свойство [[Scope]]
Счётчик
Замыкания. Задачи
Замыкания. Задачи
IIFE (Immediately Invoked Function
Expression)
IIFE
Используйте модули и не засоряйте
глобальный объект ненужными там
переменными (с) Ваш Кэп
IIFE
Coding Time
Cheating with LE. Bad practices.
 eval
 with
 setInterval(string, number)
 setTimeout(string, number)
Cheating with LE. Eval.
 Функция eval(string) позволяет выполнить код, переданный ей в виде
строки.
 Данный код будет выполнен в текущем пространстве имён
 В строгом режиме создаёт своё пространство имён
Cheating with LE. Eval.
Cheating with LE. With.
1. Позволяет работать со свойствами объекта в
упрощённом стиле
2. Создаёт новое LE
Правила сборки мусора.
1. Никому не говорить о сборке мусора.
2. Если переменная стала недоступна из глобального объекта – она
удаляется.
Утечка памяти в замыкании.
1. https://alexnisnevich.github.io/untrusted/ - Игра
2. https://habrahabr.ru/post/138062/ - О работе таймеров

Замыкания и область видимости