Jquery 在嵌套函数中传递父函数参数?

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++){

嵌套函数中的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++){
            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,大概是为了澄清问题,并能够通过函数名引用函数。出于这个原因,这实际上是个好主意!