Skip to content

展开语法糖

用于“展开一个数组、对象或可迭代结构的内容”

形式

展开语法看起来与剩余参数语法一模一样。

某种程度上它们完全相反:

扩展语法是将数组“扩展”为元素,而其余语法是将多个元素收集起来,然后“浓缩”为一个元素。

应用

  • ...iterable // 在函数调用或数组中展开

  • ...object // 在对象字面量中展开属性

函数调用时展开数组

const nums = [1, 2, 3];
Math.max(...nums); // 相当于 Math.max(1, 2, 3)

合并数组

const a = [1, 2];
const b = [3, 4];
const merged = [...a, ...b]; // [1, 2, 3, 4]

拷贝数组(浅拷贝)

const original = [1, 2, 3];
const copy = [...original];

拆分字符串为字符数组

const word = 'hello';
const chars = [...word]; // ['h', 'e', 'l', 'l', 'o']

对象展开(合并或克隆)

const user = { name: 'Echo', age: 21 };
const cloned = { ...user };
const updated = { ...user, age: 22 }; // 覆盖 age