ES9 中的扩展 Array 语法如何支持无限数量参数(How the Extended Array Syntax in ES9 Supports an Infinite Number of Arguments)

在 ECMAScript 2018 (即 ES9) 中,有一项非常有用的特性是扩展 Array 语法,它允许我们使用三个点 (...) 来表示将一个数组展开为逗号分隔值的列表。除此之外,这个特性还支持无限数量参数,在本文中,我们将会深入了解这个特性。

扩展 Array 语法

在 ES6 中,我们可以使用扩展 Array 语法来初始化一个数组。比如:

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

在上面的代码中,我们使用了扩展 Array 语法将 arr 展开成了 1, 2, 3,然后加上了 4, 5, 6 的值,最后组成了一个新的数组 arr2

扩展 Array 语法支持无限数量参数

在 ES9 中,扩展 Array 语法得到了进一步增强,它可以支持无限数量参数,让我们看看下面的代码:

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

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

在上面的代码中,我们定义了一个 sum 函数,使用三个点 (...) 将参数列表展开成了一个数组 nums。这样,即使我们向 sum 函数传递了无限数量的参数,它也能够正常工作。

深入理解无限数量参数的本质

无限数量参数在 ES9 中的实现其实是借助了 JavaScript 中另一个非常有用的特性。我们先回忆一下我们在 ES6 中如何实现可变参数函数:

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

这个函数可以接受任何数量的参数,并将它们求和。但这个语法是如何工作的呢?

事实上,...nums 这个语法是将传入的参数转化成了一个数组,然后我们可以在函数体内直接使用这个数组。这个特性称为“剩余参数”。

那么回到无限数量参数,我们再看一下上面的例子:

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

我们传递的参数不是一个数组,而是一系列的值。事实上,这些值会被自动转化成一个数组。这个语法称为“展开语法”。

由于展开语法和剩余参数都是使用三个点 (...) 来表示,因此我们可以说,无限数量参数本质上就是使用了剩余参数和展开语法的结合。

结论

在本文中,我们探讨了 ES9 中的扩展 Array 语法如何支持无限数量参数,以及它的本质是如何实现的。这个特性可以让我们更加方便地编写可变参数函数,并且能够提高我们的代码的可读性和清晰度。希望本文对你有所帮助!

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