Jquery 在嵌套函数中传递父函数参数?
嵌套函数中的arguments对象有问题,看起来像arguments。长度取自父函数,而参数[0]取自嵌套函数。。。任何人都可以解释为什么会发生这种情况?并告诉我将父foo的参数传递给bar的最有效方法Jquery 在嵌套函数中传递父函数参数?,jquery,javascript,Jquery,Javascript,嵌套函数中的arguments对象有问题,看起来像arguments。长度取自父函数,而参数[0]取自嵌套函数。。。任何人都可以解释为什么会发生这种情况?并告诉我将父foo的参数传递给bar的最有效方法 $.fn.foo = function(color1, color2, time ){ return this.each(function bar(){ for(var i = 0;i < (arguments.length - 1);i++){
$.fn.foo = function(color1, color2, time ){
return this.each(function bar(){
for(var i = 0;i < (arguments.length - 1);i++){
alert(arguments.length); //this is taken from foo function and returns 2
alert(arguments[i]); //this is taken from bar
}
});
};
$.fn.foo=函数(颜色1、颜色2、时间){
返回此.each(功能条(){
对于(变量i=0;i<(arguments.length-1);i++){
alert(arguments.length);//这是从foo函数获取的,返回2
alert(arguments[i]);//这是从bar中获取的
}
});
};
参数
将始终(除非更改)具有当前正在执行的函数的范围,在您的情况下,该函数是条
阅读jquery。每个
,函数“prototype”如下所示:
.each(函数(索引、元素))
所以当然
参数。length
将返回2。是否已命名变量以捕获这两个已发送的参数是另一回事,但如果使用两个参数调用函数,则arguments对象的长度将为2。参数将始终(除非更改)具有当前执行函数的范围,在您的情况下为bar
阅读jquery。每个
,函数“prototype”如下所示:
.each(函数(索引、元素))
所以当然参数。length
将返回2。是否已命名变量以捕获这两个已发送的参数是另一回事,但如果使用两个参数调用函数,则arguments对象的长度将为2。简单解决方案:获取对参数的本地引用
$.fn.foo = function(color1, color2, time ){
var args = arguments; // Create a private reference
return this.each(function bar(){
alert(args.length); //Use private reference
});
};
简单的解决方案:获取对参数的本地引用
$.fn.foo = function(color1, color2, time ){
var args = arguments; // Create a private reference
return this.each(function bar(){
alert(args.length); //Use private reference
});
};
出于好奇,是否有理由将命名函数bar
传递给每个函数,而不仅仅是匿名函数?@Zirak,大概是为了澄清问题,并能够通过函数名引用函数。出于这个原因,这实际上是个好主意!出于好奇,是否有理由将命名函数bar
传递给每个函数,而不仅仅是匿名函数?@Zirak,大概是为了澄清问题,并能够通过函数名引用函数。出于这个原因,这实际上是个好主意!