JavaScript 三个点(…)是什么
在JavaScript中,我们有多种方法可以将一个对象的值赋给另一个对象。有时,我们不知道要分配的确切参数数量。在这种情况下,使用 三个点 。
这些三个点被称为 展开运算符 ,它将可迭代对象(数组,字符串或对象)展开成单个值。展开运算符非常有用,它减少了需要编写的代码量,并提高了可读性。
展开运算符的语法与 剩余参数 相同,但工作方式不同。它是作为ES6 JavaScript中的一个功能引入的。
语法:
参数:
- valueToSpread: 在这里指定要分配给新变量的可迭代对象。它可以是一个数组或字符串。
返回类型: 它返回传递对象后的参数列表。
让我们看一些例子,首先通过简单方法给对象赋值,然后使用三个点或扩展语法执行相同的操作。
示例1: 在这个例子中,我们将使用内置的concat方法连接两个数组,然后使用三个点语法执行相同的任务。
Javascript
输出:
示例2: 在这个示例中,我们将使用赋值运算符和展开运算符来复制数组的内容:
JavaScript
输出:
说明: 我们可以看到,使用赋值运算符(’=’)给数组赋值并修改新数组时,旧数组也被修改了。这会导致问题,因为我们并不总是想要修改旧数组的内容,但如果我们使用展开运算符的语法来赋值并修改新数组,旧数组将保持不变。这是因为展开运算符返回的是一个新数组,而不是旧数组的引用。
示例3: 在这个例子中,我们将使用 Math.min() 方法找到一个数组的最小值:
JavaScript
输出:
解释:math.min()方法需要一个对象列表来查找列表中的最小值,但当传入一个数组时,它会输出NaN。为了解决这个问题,我们使用了三个点的格式/扩展操作符。由于扩展操作符返回一个对象列表,因此它被方法接受并返回数组的最小元素。
例子4: 在这个例子中,我们将使用三个点将一个对象赋给另一个对象:
JavaScript
输出:
示例5: 在这个例子中,我们将在函数调用中使用扩展运算符。
Javascript
输出:
解释: 我们可以看到,在不知道要传递多少个参数的情况下,展开运算符非常有用。在这里,我们的 add 函数可以适用于任意数量的参数,因此我们不需要为不同数量的参数指定多个函数。
注意: 我们应该记住,只有可迭代的对象才能使用展开运算符进行传递。例如, 纯粹对象 不可迭代,因为它们缺少 Symbol.iterator 方法。
示例 6: 在这个示例中,我们将尝试展开一个纯粹对象。
Javascript
输出:
解释: 可以看到,在使用三个点来传播一个不可迭代的对象时会抛出错误。