在JavaScript中,对象是通过引用传递的,而不是通过值传递的。这意味着,当你在 forEach
或 map
的回调函数中修改对象时,你实际上是在修改原数组中的那个对象。
例如:
const arr = [{ a: 1 }, { b: 2 }];
arr.forEach((item) => {
item.c = 3;
});
console.log(arr); // 输出:[{ a: 1, c: 3 }, { b: 2, c: 3 }]
const newArr = arr.map((item) => {
item.d = 4;
return item;
});
console.log(arr); // 输出:[{ a: 1, c: 3, d: 4 }, { b: 2, c: 3, d: 4 }]
在这个例子中,我们在 forEach
和 map
的回调函数中修改了对象,这些修改也反映在了原数组中的对象上。这是因为对象在这些方法中是通过引用传递的,所以修改的实际上是原数组中的对象。