Переменная ln
не является неизвестной в функции определения объема (работает здесь живут ), что заставляет вас думать, что это так? Поскольку функция закрывается в контексте выполнения вызова на GetSelectedCheckboxIds
, ей будет доступна ln
.
Правила определения области действия довольно просты, но они не похожи на многие другие языки. Подробнее в этой статье о замыканиях , но в основном функция «закрывает» (ссылается на) все данные в области видимости в контексте выполнения, в котором они были созданы. В вашем случае анонимная функция была создана в контексте выполнения вызова GetSelectedCheckboxIds
и поэтому имеет доступ к аргументам и переменным, определенным в этом контексте (className
и ln
, в данном случае), а также к любой унаследованный от включающего контекста (включая глобальный контекст выполнения, то есть, как JavaScript обрабатывает глобальные переменные).