Ответ 1
JavaScript использует функцию scoping, правила обзора одинаковы во всех средах JS. Как отметил Никан, понимание закрытия важно знать, что доступно в вашем текущем объеме.
В основном функция "запоминает" среду, в которой она была определена. Поэтому, если вы используете встроенную анонимную функцию для вашего обратного вызова, у нее будет доступ ко всем переменным, доступным для его родительской функции, и ко всему, что передается в нее в качестве аргумента.
Несколько ресурсов относительно закрытия и области видимости в JavaScript:
- Функции и область действия @MDC
- Закрытие книги по закрытию JavaScript
- Стюарт Лангридж: Секреты закрытия JavaScript, часть 1 (видео)
- Стюарт Лангридж: Секреты закрытия JavaScript, часть 2 (видео)
Книга Стояна Стефанова Объектно-ориентированный JavaScript отлично справляется с пояснением области использования JavaScript и того, как работает лексическая область работы функций (см. главу 4). Я бы рекомендовал книгу всем, кто серьезно относится к программированию JS.