Skip to content

js 中 ... 的用法

展开语法(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);

字面量数组构造或字符串:

[...iterableObj, '4', ...'hello', 6];

构造字面量对象时,进行克隆或者属性拷贝(ECMAScript 2018规范新增特性):

let objClone = { ...obj };

示例

在函数调用时使用展开语法

等价于apply的方式

如果想将数组元素迭代为函数参数,一般使用Function.prototype.apply 的方式进行调用。

function myFunction(x, y, z)

var args = [0, 1, 2];

myFunction.apply(null, args);

有了展开语法,可以这样写:

function myFunction(x, y, z)

var args = [0, 1, 2];

myFunction(...args);

所有参数都可以通过展开语法来传值,也不限制多次使用展开语法。

function myFunction(v, w, x, y, z)

var args = [0, 1];

myFunction(-1, ...args, 2, ...[3]);