var arr1 = [1,2,3,4];
var arr2 = [{a:1},{a:2},{a:3}];
arr1.forEach(item =>{
item = item * item;
});
arr2.forEach(item =>{
item.a = item.a * item.a;
});
console.log(arr1); // [1,2,3,4]
console.log(arr2); // [{a:1},{a:4},{a:9}]
不知道你看出来什么没
forEach 在对 item 进行修改的时候,如果 item 是原始类型的值,item 对应的 的内存地址实际并没有变化
如果 item 是 引用类型的值,item 对应多的内存地址也没有变化,但是对应的值,已经重写了