JavaScript 三个点(…)是什么 | 您所在的位置:网站首页 › 店长的岗位认知三个点是什么 › JavaScript 三个点(…)是什么 |
JavaScript 三个点(…)是什么
在JavaScript中,我们有多种方法可以将一个对象的值赋给另一个对象。有时,我们不知道要分配的确切参数数量。在这种情况下,使用 三个点 。 这些三个点被称为 展开运算符 ,它将可迭代对象(数组,字符串或对象)展开成单个值。展开运算符非常有用,它减少了需要编写的代码量,并提高了可读性。 展开运算符的语法与 剩余参数 相同,但工作方式不同。它是作为ES6 JavaScript中的一个功能引入的。 语法: var nameOfVar = [...valueToSpread];参数: valueToSpread: 在这里指定要分配给新变量的可迭代对象。它可以是一个数组或字符串。返回类型: 它返回传递对象后的参数列表。 让我们看一些例子,首先通过简单方法给对象赋值,然后使用三个点或扩展语法执行相同的操作。 示例1: 在这个例子中,我们将使用内置的concat方法连接两个数组,然后使用三个点语法执行相同的任务。 Javascript var baseArr = [1, 2, 3]; var baseArr2 = [4, 5, 6]; // Inbuilt concat method baseArr = baseArr.concat(baseArr2); console.log(baseArr); var spreadArr = ['a', 'b', 'c']; var spreadArr2 = ['d', 'e', 'f']; // Concatenating using three dots spreadArr = [...spreadArr, ...spreadArr2]; console.log(spreadArr);输出: [1, 2, 3, 4, 5, 6] ['a', 'b', 'c', 'd', 'e', 'f']示例2: 在这个示例中,我们将使用赋值运算符和展开运算符来复制数组的内容: JavaScript var baseArr = [1, 2, 3]; var baseArr2 = baseArr; baseArr2.push(4); console.log(baseArr2); console.log(baseArr); var spreadArr = ['a', 'b', 'c']; var spreadArr2 = [...spreadArr]; spreadArr2.push('d'); console.log(spreadArr); console.log(spreadArr2);输出: [1, 2, 3, 4] [1, 2, 3, 4] ['a', 'b', 'c'] ['a', 'b', 'c', 'd']说明: 我们可以看到,使用赋值运算符(’=’)给数组赋值并修改新数组时,旧数组也被修改了。这会导致问题,因为我们并不总是想要修改旧数组的内容,但如果我们使用展开运算符的语法来赋值并修改新数组,旧数组将保持不变。这是因为展开运算符返回的是一个新数组,而不是旧数组的引用。 示例3: 在这个例子中,我们将使用 Math.min() 方法找到一个数组的最小值: JavaScript var baseArr = [5, 2, 7, 8, 4, 9]; console.log(Math.min(baseArr)); console.log(Math.min(...baseArr));输出: NaN 2解释:math.min()方法需要一个对象列表来查找列表中的最小值,但当传入一个数组时,它会输出NaN。为了解决这个问题,我们使用了三个点的格式/扩展操作符。由于扩展操作符返回一个对象列表,因此它被方法接受并返回数组的最小元素。 例子4: 在这个例子中,我们将使用三个点将一个对象赋给另一个对象: JavaScript const spreadObj = { name: 'Ram', country: 'India', }; // Cloning previous object const newObj = { ...spreadObj }; console.log(newObj);输出: {name: 'Ram', country: 'India'}示例5: 在这个例子中,我们将在函数调用中使用扩展运算符。 Javascript function add(...objects){ var ans = 0; for(var i = 0; i < objects.length; i++){ ans += objects[i]; } console.log(ans); } add(1, 2); add(23, 45, 67, 56);输出: 3 191解释: 我们可以看到,在不知道要传递多少个参数的情况下,展开运算符非常有用。在这里,我们的 add 函数可以适用于任意数量的参数,因此我们不需要为不同数量的参数指定多个函数。 注意: 我们应该记住,只有可迭代的对象才能使用展开运算符进行传递。例如, 纯粹对象 不可迭代,因为它们缺少 Symbol.iterator 方法。 示例 6: 在这个示例中,我们将尝试展开一个纯粹对象。 Javascript const plainObj = { name: 'Ram' }; // Spreading non iterable object const baseArr = [...plainobj];输出: 解释: 可以看到,在使用三个点来传播一个不可迭代的对象时会抛出错误。 |
CopyRight 2018-2019 实验室设备网 版权所有 |