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

时间:2011-04-29 10:01:31

标签: jquery javascript

我在嵌套函数中遇到参数对象的问题,看起来像arguments.length取自父函数而参数[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 

        }
    });
    };

2 个答案:

答案 0 :(得分:4)

arguments将始终(除非更改)具有当前正在执行的函数的范围,在您的情况下为bar

阅读jquery .each docs,函数“prototype”如下:

.each( function(index, Element) )

当然arguments.length将返回2.是否有命名变量来捕获这两个发送的参数是另一个故事,但如果使用2个参数调用该函数,则arguments对象的长度为2。 / p>

答案 1 :(得分:3)

简单解决方案:获取arguments的本地参考。

$.fn.foo = function(color1, color2, time ){
    var args = arguments; // Create a private reference
    return this.each(function bar(){
        alert(args.length); //Use private reference
    });
};