JavaScript 中的“默认展开”通常指的是在某些情况下,数组或对象会自动地被展开(spread)或解构(destructuring)。以下是一些基础概念和相关内容:
...
// 展开数组
let arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]
// 解构赋值
let [a, b, ...rest] = [1, 2, 3, 4, 5];
console.log(a); // 1
console.log(b); // 2
console.log(rest); // [3, 4, 5]
应用场景:
// 展开对象
let obj1 = { a: 1, b: 2 };
let obj2 = { ...obj1, c: 3 }; // { a: 1, b: 2, c: 3 }
// 解构赋值
let { x, y, ...others } = { x: 10, y: 20, z: 30 };
console.log(x); // 10
console.log(y); // 20
console.log(others); // { z: 30 }
应用场景:
let { a = 10, b } = { b: 5 };
console.log(a); // 10
console.log(b); // 5
如果 a
没有在源对象中定义,默认值 10
应该生效。如果没有生效,检查是否有其他代码覆盖了这个变量。
let arr = [1, 2, 3];
let newArr = [...arr];
arr.push(4);
console.log(newArr); // [1, 2, 3] 不受影响
确保理解展开运算符创建的是浅拷贝,对于嵌套对象或数组,修改原始数据会影响拷贝。
JSON.parse(JSON.stringify(obj))
或第三方库(如 lodash 的 _.cloneDeep
)来避免浅拷贝带来的问题。通过这些方法,可以有效利用 JavaScript 中的展开和解构特性,同时避免常见的问题。
领取专属 10元无门槛券
手把手带您无忧上云