使用扩展运算符(Spread):...
ES6
主要用途
一、函数参数
函数调用时(不是定义时)将参数变成单个依次传入:f( ...iterableObj )
这时三个点的意思就是:收集剩余的参数作为一个数组并存入该变量中
二、数组字面量
数组字面量中:[ ...iterableObj ]
ES6
Array.from(obj)
和[...obj]
存在一个细微的差别:
- Array.from 适用于类数组对象也适用于可迭代对象
- Spread 语法只适用于可迭代对象
三、对象字面量
对象字面量中:{ ...iterableObj }
ES2018
注意
- 展开语法是浅拷贝
- 展开语法用于可迭代对象时,使用内部迭代器;用于普通对象时,进行浅拷贝,类似 Object.assign()
NOTE
函数的 Rest 参数表示将剩余的参数列表转为数组,扩展运算符相反,是将可迭代对象展开到参数列表中