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

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

Upload: rodion-golovushkin

Post on 13-Apr-2017

137 views

Category:

Software


3 download

TRANSCRIPT

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

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

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

Function declaration, function expression

Function declaration

Function expression

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

Глобальный объект

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

Виды функций.

Coding Time

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

Порядок исполнения скриптов

1. Инициализация всех Function Declaration

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

Порядок исполнения скриптов

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

Порядок исполнения скриптов

1. Инициализация всех Function Declaration2. Инициализация всех var3. Начало выполнения скрипта

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

Порядок исполнения скриптов

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

Hoisting(Поднятие)

=

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

Нюансы поднятия

1. Функциональная область видимости

=

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

Нюансы поднятия

1. Функциональная область видимости

=

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

Нюансы поднятия

1. Функциональная область видимости

2. Количество объявлений одной переменной не имеет значения

=

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

Нюансы поднятия

1. Функциональная область видимости

2. Количество объявлений одной переменной не имеет значения

3. Сначала поднимается function declaration, а затем var

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

Lexical Environment (Лексическое окружение)

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

Lexical Environment (Лексическое окружение)

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

Скрытое свойство [[Scope]]

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

Счётчик

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

Замыкания. Задачи

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

Замыкания. Задачи

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

IIFE (Immediately Invoked Function Expression)

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

IIFE

Используйте модули и не засоряйте глобальный объект ненужными там

переменными (с) Ваш Кэп

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

IIFE

Coding Time

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

Cheating with LE. Bad practices.

eval with setInterval(string, number) setTimeout(string, number)

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

Cheating with LE. Eval.

Функция eval(string) позволяет выполнить код, переданный ей в виде строки.

Данный код будет выполнен в текущем пространстве имён В строгом режиме создаёт своё пространство имён

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

Cheating with LE. Eval.

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

Cheating with LE. With.

1. Позволяет работать со свойствами объекта в упрощённом стиле

2. Создаёт новое LE

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

Правила сборки мусора.

1. Никому не говорить о сборке мусора.2.Если переменная стала недоступна из глобального

объекта – она удаляется.

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

Утечка памяти в замыкании.

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

1. https://alexnisnevich.github.io/untrusted/ - Игра2. https://habrahabr.ru/post/138062/ - О работе таймеров