📜  JavaScript传播运算符

📅  最后修改于: 2020-09-27 07:40:55             🧑  作者: Mango

在本教程中,您将借助示例学习JavaScript传播运算符 。

扩展运算符是JavaScript ES6版本中新增功能的新增功能。


点差算子

扩展运算符 ...用于扩展或扩展可迭代对象或数组。例如,

let arrValue = ['My', 'name', 'is', 'Jack'];

console.log(arrValue);   // ["My", "name", "is", "Jack"]
console.log(...arrValue); // My name is Jack

在这种情况下,代码:

console.log(...arrValue)

等效于:

console.log('My', 'name', 'is', 'Jack');

使用传播运算符复制阵列

您还可以使用传播语法 ...将项目复制到单个数组中。例如,

let arr1 = ['one', 'two'];
let arr2 = [...arr1, 'three', 'four', 'five'];

console.log(arr2); 
//  Output:
//  ["one", "two", "three", "four", "five"]

使用传播运算符克隆阵列

在JavaScript中,对象是通过引用而不是值来分配的。例如,

let arr1 = [ 1, 2, 3];
let arr2 = arr1;

console.log(arr1); // [1, 2, 3]
console.log(arr2); // [1, 2, 3]

// append an item to the array
arr1.push(4);

console.log(arr1); // [1, 2, 3, 4]
console.log(arr2); // [1, 2, 3, 4]

在这里,变量arr1arr2都引用相同的数组。因此,一个变量的变化导致两个变量的变化。

但是,如果要复制数组以使它们不引用同一数组,则可以使用spread 运算符。这样,一个数组中的更改不会反映在另一个数组中。例如,

let arr1 = [ 1, 2, 3];

// copy using spread syntax
let arr2 = [...arr1];

console.log(arr1); // [1, 2, 3]
console.log(arr2); // [1, 2, 3]

// append an item to the array
arr1.push(4);

console.log(arr1); // [1, 2, 3, 4]
console.log(arr2); // [1, 2, 3]

带有对象的传播算子

您还可以将spread 运算符与对象字面量。例如,

let obj1 = { x : 1, y : 2 };
let obj2 = { z : 3 };

// add members obj1 and obj2  to obj3
let obj3 = {...a, ...b};

console.log(c); // {x: 1, y: 2, z: 3}

在这里, obj1obj2属性都使用spread 运算符添加到obj3中。


休息参数

当将扩展运算符用作参数时,它称为rest参数。

您还可以使用rest参数在函数调用中接受多个参数。例如,

let func = function(...args) {
    console.log(args);
}

func(3); // [3]
func(4, 5, 6); // [4, 5, 6]

这里,

  • 当将单个参数传递给func() 函数 ,rest参数仅采用一个参数。
  • 传递三个参数时,rest参数将使用所有三个参数。

注意 :使用rest参数会将参数作为数组元素传递。

您还可以使用传播运算符将多个参数传递给函数 。例如,

function sum(x, y ,z) {
    console.log(x + y + z);
}

const num1 = [1, 3, 4, 5];

sum(...num1); // 8

如果使用spread 运算符传递多个参数,则该函数将接受必需的参数,而忽略其余参数。


注意ES6中引入了Spread 运算符 。某些浏览器可能不支持使用传播语法。请访问JavaScript Spread Operator支持以了解更多信息。