在Javascript中的可变参数函数内调用可变参数函数?

Posted

技术标签:

【中文标题】在Javascript中的可变参数函数内调用可变参数函数?【英文标题】:Calling a variadic function inside a variadic function in Javascript? 【发布时间】:2011-10-12 02:59:04 【问题描述】:

我有两个函数 a() 和 b(),都是可变参数函数,比如说当我像这样调用函数 a() 时:

a(arg0, arg1, arg2, arg3, ...., argn);

那么函数 b() 也将在 a() 中被调用,但在 a() 的参数列表中没有第一个参数“arg0”:

b(arg1, arg2, arg3, ...., argn);

有什么办法吗?

【问题讨论】:

相关:***.com/questions/960866/… 【参考方案1】:

每个 javascript function 实际上只是另一个“对象”(JavaScript 意义上的对象),并带有一个 apply 方法(请参阅 Mozilla's documentation)。因此你可以做这样的事情......

b = function(some, parameter, list)  ... 

a = function(some, longer, parameter, list)

   // ... Do some work...

   // Convert the arguments object into an array, throwing away the first element
   var args = Array.prototype.slice.call(arguments, 1);

   // Call b with the remaining arguments and current "this"
   b.apply(this, args);

【讨论】:

酷,我刚刚做了一个快速测试,它工作正常。感谢您的帮助!

以上是关于在Javascript中的可变参数函数内调用可变参数函数?的主要内容,如果未能解决你的问题,请参考以下文章

从可变参数函数的调用引发异常崩溃一例引发的一些思考

C语言中如何实现可变参函数

可变长参数

函数基础之调用,参数,可变长参数

可变长参数函数对象嵌套名称空间和作用域

函数参数的应用