将null传递给Function.call()

时间:2012-11-15 12:03:39

标签: javascript

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()还是被认为是不好的做法?

1 个答案:

答案 0 :(得分:1)

  

我的问题是,有不同的方法吗?

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

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

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

你可以,而且这不算坏事。该函数的行为就像在全局上下文中使用它一样。这也使您可以在带有多个参数的函数上使用数组。

另见: