Области видимости и замыкания в Javascript
Со всеми этими функциями, нам необходимо следить за областью видимости! Какие переменные где определены? Кто имеет к ним доступ? Что за загадочная переменная this
, которая видимо воплощает все странное и загадочное, касающееся области видимости в Javascript?
Все эти области (и использование замыканий) важны, потому что функции в JS могут быть вызваны в разное время и из разных участков кода, особенно если они связаны с событиями (где они вызываются в виде коллбэков - которые вы уже видели, но мы рассмотрим их подробнее в следующем уроке).
Пункты для размышления
- Чему равна
this
? (непростой вопрос...) - Как поместить переменную в какую-либо область видимости?
- Зачем определять переменную
that
? - Почему нехорошо изменять или ссылаться на переменные вне вашей области?
- Почему "приватные" переменные на самом деле не совсем "приватные"?
- Функции всегда должны возвращать то же самое значение... или.. ?
- Как способ вызова функции (в виде функции, метода...) оказывает влияние на область видимости (и
this
)?
Ваши задания
- Прочтите Что вам надо знать об областях видимости в Javascript от Smashing Magazine
- Прочтите о Замыканиях в Javascript от learn.jquery.com
- Прочтите ответы на SO по вопросу "Как работают замыкания в Javascript?" для лучшего понимания нюансов.
- Прочтите о
this
в Javascript - Прочтите о методах Javascript
apply
,call
иbind
- Прочтите о Function.Prototype.Bind для глубокого понимания 'bind'. Возможно, вам придется вернуться к этому материалу попозже из-за его сложности.
Дополнительные ресурсы
Этот раздел содержит полезные ссылки на дополнительные материалы. Это не обязательно, так что расценивайте их как нечто полезное, если вы хотите поглубже погрузиться в тему