Переменная JavaScript не известна встроенной функции (область видимости?) - PullRequest
0 голосов
/ 01 декабря 2010

У меня есть следующий jquery:

function GetSelectedCheckboxIds(className) {
    var ln = className.length;
    return $('.' + className + ':checked').map(function() {
        return this.id.substring(ln);
    }).get();
}

Переменная ln неизвестна в области действия функции карты.
Каковы правила области видимости и как я могу передать свое значение ln внутренней функции?

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Переменная ln не является неизвестной в функции определения объема (работает здесь живут ), что заставляет вас думать, что это так? Поскольку функция закрывается в контексте выполнения вызова на GetSelectedCheckboxIds, ей будет доступна ln.

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

0 голосов
/ 01 декабря 2010

Ваш код отлично работает для меня: http://jsfiddle.net/ThiefMaster/k3hzQ/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...