展开语法糖
用于“展开一个数组、对象或可迭代结构的内容”
形式
展开语法看起来与剩余参数语法一模一样。
某种程度上它们完全相反:
扩展语法是将数组“扩展”为元素,而其余语法是将多个元素收集起来,然后“浓缩”为一个元素。
应用
...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