扩展运算符(常用)

1.扩展运算符...可以在函数调用/数组构造时, 将数组表达式或者string在语法层面展开;还可以在构造对象时, 将对象表达式按key-value的方式展开。

  • 函数调用
function fn (...args) {
    console.log(args);  // [ 1, 2, 3, 4, 5 ]  这里体现一个 收 的特性
}
fn(1,2,3,4,5)
// 由 1,2,3,4,5 => [1,2,3,4,5]
  • 数组构造
let arr = [1,2,3,4];
let newArr = [...arr , 5,6];
console.log(newArr);  // [ 1, 2, 3, 4, 5, 6 ]

// 代替 concat 合并数组

let arr1 = [1,2,3,4];
let arr2 = [5,6,7];
let newArr = [...arr1 , ...arr2]; 
console.log(newArr); // [ 1, 2, 3, 4, 5, 6, 7 ]
  • 字符串构造
let str = 'hello';

let arr = [...str];

console.log(arr);  // [ 'h', 'e', 'l', 'l', 'o' ]
  • 对象中使用
let obj = {
    a:1,
    b:2,
    c:3
}

let obj2 = {
    ...obj;
    d:4
}
console.log(obj2); // { a: 1, b: 2, c: 3, d: 4 }

2.使用场景

  • 函数
function sum(x, y, z) {
  return x + y + z;
}
const numbers = [1, 2, 3];

//不使用延展操作符
console.log(sum.apply(null, numbers));

//使用延展操作符
console.log(sum(...numbers));// 6

  • 数组

可多次使用

const stuendts = ['Jine','Tom']; 
const person = ['Tony',... stuendts,'Aaron','Anna'];
conslog.log(person)// ["Tony", "Jine", "Tom", "Aaron", "Anna"]


// 浅拷贝和Object.assign类似

var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
var arr3 = [...arr1, ...arr2];// 将 arr2 中所有元素附加到 arr1 后面并返回
//等同于
var arr4 = arr1.concat(arr2);
  • 对象
var obj1 = { foo: 'bar', x: 42 };
var obj2 = { foo: 'baz', y: 13 };

var clonedObj = { ...obj1 };
// 克隆后的对象: { foo: "bar", x: 42 }

var mergedObj = { ...obj1, ...obj2 };
// 合并后的对象: { foo: "baz", x: 42, y: 13 }
Last Updated: 12/21/2020, 11:42:50 PM