Javascript: "Infinite" parameters for function?

在 JavaScript 中,函数可以接受任意数量的参数。但是如果我们想要让一个函数接受无限数量的参数怎么办呢?这时候就需要用到“Rest”参数了。

Rest 参数

Rest 参数通过三个点(...)来表示,它允许我们将不定数量的参数表示为一个数组。例如:

-------- ------------ -
  ------ ------------------- -------- -- ----- - ---------
-

------------------ -- ---- -- -
------------------ -- -- -- ---- -- --

在上面的例子中,sum 函数可以接受任意数量的参数,并使用 reduce 方法将它们相加。我们可以传入任意数量的参数,这些参数都会被放在 args 数组中。

另外,rest 参数必须放在所有参数的最后一个位置上,否则会引发语法错误。

Arguments 对象

在 ES6 之前,我们使用 arguments 对象来实现接受任意数量的参数。例如:

-------- ----- -
  --- ------ - --
  --- ---- - - -- - - ----------------- ---- -
    ------ -- -------------
  -
  ------ -------
-

------------------ -- ---- -- -
------------------ -- -- -- ---- -- --

在上面的例子中,我们省略了函数的参数列表,而是使用 arguments 对象来获取传入的参数。arguments 是一个类数组对象,它包含了所有传入函数中的参数。

虽然 arguments 在 ES6 之后已经不再推荐使用,但它仍然是 JavaScript 中一个重要的概念,我们需要了解它的使用方法。

扩展运算符

除了 Rest 参数之外,我们还可以使用扩展运算符(spread operator)将一个数组“展开”成为一个函数的参数列表。例如:

-------- ------ -- -- -
  ------ - - - - --
-

----- ------- - --- -- ---

----------------------------- -- -

在上面的例子中,我们将一个包含三个数字的数组展开成为 sum 函数的三个参数。这样做的好处是,我们可以很方便地将一个数组作为函数的参数传递给另一个函数。

总结

通过 Rest 参数、Arguments 对象和扩展运算符,我们可以很方便地实现接受任意数量的参数的函数。这些方法都有自己的优缺点,我们需要根据具体情况进行选择。

下面是一个综合运用以上三种方法的示例代码:

-------- -------------------- -------- -
  -- ------------ --- -- -
    ----- --- --------- ----- --- -------- -- -----------
  -
  -- ------------ --- - -- ----------------------- -
    ---- - --------
  -
  ------ ------------ -- --- - ------------
-

----------------------- -- -- ---- -- --- -- --
----------------------- --- -- ----- -- --- -- --

在上面的代码中,multiply 函数接受一个 multiplier 参数和任意数量的参数。如果没有传入任何参数,或者只传入了一个数组作为参数,就会抛出错误。否则,它将对每个参数都乘以 multiplier 并返回一个包含结果的数组。

希望这篇文章能够帮助你更好地理解 JavaScript 中的函数参数传递。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/31201