You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中重新分配数组后新变量为何仍指向旧值?

JavaScript引用类型:重新赋值原数组后新变量为何保留原值?

在Udemy学习时了解到,JavaScript中的数组和对象属于引用类型,将已声明的数组赋值给新变量(如arr2)时,复制的是原数组的指针而非值。但当用let声明的原数组被重新分配时,为何新变量arr2输出的是重新分配前的值而非新值?

示例代码1

let arr1 = [0, 1, 2, 3];
let arr2 = arr1;

arr1.shift();
console.log(arr2); // [ 1, 2, 3]

arr1[0] = 3;
console.log(arr2); // [ 3, 2, 3]

示例代码2

为何输出[0, 1, 2, 3]?

let arr = [0, 1, 2, 3]
let arr2 = arr

arr = [3, 2, 1, 0]

console.log(arr2) // [0, 1, 2, 3]

解决方案

arr2指向的是arr最初引用的数组[0, 1, 2, 3]的内存地址;当arr被重新赋值为新数组[3, 2, 1, 0]时,只是arr指向了新数组的内存地址,而arr2仍指向原数组的内存地址,因此输出原数组的值。


内容的提问来源于stack exchange,提问作者최석규

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:10:31