语法
函数调用:
myFunction(...iterableObj);
字面量数组构造或字符串:
[...iterableObj, '4', ...'hello', 6];
构造字面量对象时,进行克隆或者属性拷贝(ECMAScript 2018 规范新增特性):
let objClone = { ...obj };
注意:...obj
这样展开对象是不行的,要{ ...obj }
这样使用。
使用
<script type="text/javascript">
// 在数组中使用
let arr1 = [1, 3, 5, 7, 9]
let arr2 = [2, 4, 6, 8, 10]
console.log(...arr1); //展开一个数组?
let arr3 = [...arr1, ...arr2]//连接数组
//在函数中使用
function sum(...numbers) {
return numbers.reduce((preValue, currentValue) => {
return preValue + currentValue
})
}
console.log(sum(1, 2, 3, 4));
//构造字面量对象时使用展开语法
let person = {name: 'tom', age: 18}
let person2 = {...person}
//console.log(...person); //报错,展开运算符不能展开对象
person.name = 'jerry'
console.log(person2); // {name: 'tom', age: 18}
console.log(person); // {name: 'jerry', age: 18}
//合并修改(经常用于接口传参合并参数)
let person3 = {...person, name: 'jack', address: "地球"}
console.log(person3);
</script>