就是"...array",把array拆开用逗号间隔。
例子:
const log = console.log;
let ps = "heklelkwe";
function spread(p) {
log("spread ", ...p);
}
spread(ps);
结果:
$ node for.js
spread h e k l e l k w e
例子:
function* ge() {
yield 8;
yield 10;
yield 12;
}
console.log("gen = ", [...ge()]); //gen = [ 8, 10, 12 ]
参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Spread_syntax
展开语法(Spread syntax), 可以在函数调用/数组构造时, 将数组表达式或者string在语法层面展开;还可以在构造字面量对象时, 将对象表达式按key-value的方式展开。(译者注: 字面量一般指 [1, 2, 3]
或者 {name: "mdn"}
这种简洁的构造方式)
例子:
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
// expected output: 6
console.log(sum.apply(null, numbers));
// expected output: 6
语法
函数调用:
myFunction(...iterableObj);
构造字面量对象时,进行克隆或者属性拷贝(ECMAScript 2018规范新增特性):
let objClone = { ...obj };
示例
在函数调用时使用展开语法
等价于apply的方式