-1
function outerFun(arg1, arg2, arg3){

    function innerFun(arg1, arg2){
        //do something
    }

    var innerArgs = Array.prototype.slice.call(arguments, 1);
    innerFun.apply(null, innerArgs);
}

如您所见,我正在尝试使用不同函数的修改参数数组调用函数。我能想到的唯一方法是使用 apply() 方法并传递切片数组。我的问题是,有没有其他方法可以做到这一点?如果没有,那么我可以将 null 传递给 apply() 还是被认为是不好的做法?

4

1 回答 1

1

我的问题是,有没有其他方法可以做到这一点?

不,apply()是 JavaScript 中唯一能够以数组作为参数运行函数的方法。但是,您仍然可以使用实际参数并使用函数:

function outerFunc(arg1, arg2, arg3){
    /* ... */
    innerFun(arg2, arg3);
    /* ... */
}

如果没有,那么我可以将 null 传递给 apply() 还是被认为是不好的做法?

你可以,而且这不被认为是不好的做法。该函数的行为就像您在全局上下文中使用它一样。这也使您能够在带有多个参数的函数上使用数组。

也可以看看:

于 2012-11-15T12:11:07.670 回答