内联函数不知道JavaScript变量(范围?)

时间:2010-12-01 12:46:47

标签: jquery scope

我有以下jquery:

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

变量ln在map函数范围内是未知的 这里有什么作用域规则,如何将我的ln值传递给内部函数?

2 个答案:

答案 0 :(得分:1)

变量ln在范围函数(工作live here)中是未知的,是什么让你认为它是?由于该函数会关闭对GetSelectedCheckboxIds调用的执行上下文,因此可以访问ln

范围规则相当简单,但它们与许多其他语言不同。更多在this article about closures中,但基本上,函数“关闭”(引用)创建它的执行上下文中的范围内的所有数据。在您的情况下,匿名函数是在对GetSelectedCheckboxIds的调用的执行上下文中创建的,因此可以访问在该上下文中定义的参数和变量(classNameln,在此case),以及从封闭上下文继承的任何内容(包括全局执行上下文,这是JavaScript执行全局变量的方式)。

答案 1 :(得分:0)

您的代码适用于我:http://jsfiddle.net/ThiefMaster/k3hzQ/