js forEach 函数 究竟会不会修改原来数组的值

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 对应多的内存地址也没有变化,但是对应的值,已经重写了

你可能感兴趣的:(JavaScript,js,forEach,修改原数组)