
本来avgX里只有25个数据,为了不污染avgX,我们使用了中间变量arr,然后在arr里添加了5个数据,打印原数组的时候会惊奇地发现avgX也变成了30个数据!这是因为数组之类引用数据类型,如果直接相等,相等于存储地址相等了,只要修改了一方,另一方会同步修改,正确的做法是在原数组里slice(0),全部截取原数组的数据,这时候我们不管如何修改arr,avgX都不会发生改变了。
![]()
本文探讨了JavaScript中数组作为引用类型的特点,通过实例解析了直接赋值导致的意外修改问题。文章强调了使用slice(0)深拷贝数组的重要性,以避免对原始数据的无意篡改。了解这一概念对于优化代码和避免潜在错误至关重要。

本来avgX里只有25个数据,为了不污染avgX,我们使用了中间变量arr,然后在arr里添加了5个数据,打印原数组的时候会惊奇地发现avgX也变成了30个数据!这是因为数组之类引用数据类型,如果直接相等,相等于存储地址相等了,只要修改了一方,另一方会同步修改,正确的做法是在原数组里slice(0),全部截取原数组的数据,这时候我们不管如何修改arr,avgX都不会发生改变了。
![]()
2369
2363

被折叠的 条评论
为什么被折叠?