请问const arrCopy = arr;与const arrCopy = [...arr];的区别是什么?
请提供需要格式化的具体内容,我会按照你指定的Markdown规则进行处理。
如果是针对你之前提出的「两种JavaScript数组赋值方式区别」的问题,按照规则格式化后的回答如下:
JavaScript两种数组赋值方式的核心区别
1. const arrCopy = arr;:引用传递
- 这种操作只是把原数组
arr的内存引用地址赋值给了新变量arrCopy,两个变量指向的是同一个数组对象 - 修改任意一个变量对应的数组元素,另一个变量的数组也会同步变化,因为它们本质上指向同一块内存空间
- 示例代码:
const arr = [1, 2, 3]; const arrCopy = arr; arrCopy[0] = 100; console.log(arr); // 输出 [100, 2, 3] console.log(arrCopy); // 输出 [100, 2, 3]
2. const arrCopy = [...arr];:浅拷贝创建新数组
- 这是ES6扩展运算符的用法,会创建一个全新的数组对象,并把原数组的所有元素浅拷贝到新数组中
- 新数组和原数组是两个独立的对象,修改新数组的普通元素不会影响原数组(注意:如果原数组包含引用类型元素,比如对象、子数组,这类元素仍会共享引用,属于浅拷贝范畴)
- 示例代码:
const arr = [1, 2, 3]; const arrCopy = [...arr]; arrCopy[0] = 100; console.log(arr); // 输出 [1, 2, 3] console.log(arrCopy); // 输出 [100, 2, 3]
内容的提问来源于stack exchange,提问作者Alexsandr
相关产品推荐
相关产品推荐

