我有以下jquery:
function GetSelectedCheckboxIds(className) {
var ln = className.length;
return $('.' + className + ':checked').map(function() {
return this.id.substring(ln);
}).get();
}
变量ln在map函数范围内是未知的 这里有什么作用域规则,如何将我的ln值传递给内部函数?
答案 0 :(得分:1)
变量ln
在范围函数(工作live here)中是未知的,是什么让你认为它是?由于该函数会关闭对GetSelectedCheckboxIds
调用的执行上下文,因此可以访问ln
。
范围规则相当简单,但它们与许多其他语言不同。更多在this article about closures中,但基本上,函数“关闭”(引用)创建它的执行上下文中的范围内的所有数据。在您的情况下,匿名函数是在对GetSelectedCheckboxIds
的调用的执行上下文中创建的,因此可以访问在该上下文中定义的参数和变量(className
和ln
,在此case),以及从封闭上下文继承的任何内容(包括全局执行上下文,这是JavaScript执行全局变量的方式)。
答案 1 :(得分:0)