function outerFun(arg1, arg2, arg3){
function innerFun(arg1, arg2){
//do something
}
var innerArgs = Array.prototype.slice.call(arguments, 1);
innerFun.apply(null, innerArgs);
}
As you can see i’m trying to call a function with a modified arguments array of a different function. The only way of doing this i can think of is using the apply() method and passing the sliced array. My question is, is there a different way of doing this? If there isn’t then can i just pass null to apply() or is that considered bad practice?
No,
apply()is the only method in JavaScript capable of running a function with an array as arguments. However, you could still use the actual arguments and use the function:You can, and it’s not considered bad practice. The function behaves just as if you use it in a global context. This also enables you to use arrays on functions which take several arguments.
See also:
apply():applyand built-in functions