…这是ES6新增的剩余/拓展运算符
官方名字叫rest-spread(剩余/拓展)。
##定义
…rest:将所有剩余的参数(其余的参数)收集到一个数组中
…spread:将迭代器张开为一个或多个参数
注意:
rest必须是唯一参数或是最后一个参数,不可以是第一个
spread可以在任何位置使用
拓展
用于数组合并
ECMAScript 提案(第 3 阶段)的剩余/扩展属性将扩展添加到对象属性面量。将自己的对象属性的枚举复制到一个新的对象上。
使用比Object.assign()更短的语法,可以轻松简单(不包括原型)或组合对象。
var obj1 = { foo: 'bar', x: 42 };
var obj2 = { foo: 'baz', y: 13 };
var clonedObj = { ...obj1 };
// Object { foo: "bar", x: 42 }
var mergedObj = { ...obj1, ...obj2 };
// Object { foo: "baz", x: 42, y: 13 }
剩余
用于解构
let obj1 = {foo: 'bar', x: 42};
let {...a,x} = obj1;
//报错
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax