·

forEach 里面对象都是引用关系,所以第一个 forEach 修改对象的值是实际修改了内存地址中真实的对象,可以简单理解成一个快捷方式,另一个是真实的文件,所以修改快捷方式中的属性实际就是修改真实文件。但第二个 forEach 相当于替换了 item 指向到一个新的内存地址,即原来 item 是一个快捷方式指向对应对象的内存地址,而你将这个快捷方式换成另一个新的对象,那实际是没有做任何修改的,而是创建了一个新的对象。