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

JavaScript数组引用问题:为何赋值后输出原数组而非空数组

为什么执行代码后result仍输出原数组?

咱们一步步拆解代码的执行逻辑,就能搞懂原因:

  1. 创建数组并赋值给num:let num = [1, 2, 3, 4, 5];
    这行代码在内存里创建了一个包含[1,2,3,4,5]的数组对象,变量num存储的是指向这个数组的内存引用地址,而非数组本身。

  2. 复制引用地址给result:let result = num;
    这里只是把num里存的引用地址复制给了result,现在num和result两个变量都指向内存中同一个数组对象。

  3. 给num重新赋值新数组:num = [];
    这一步是关键:它不是修改原来的数组,而是在内存里新建了一个空数组对象,然后把这个新数组的引用地址赋值给num。此时num的引用地址已经换成新的了,但result依然保留着原来指向[1,2,3,4,5]的引用地址,所以console.log(result)输出的还是原数组。

简单说:你混淆了「修改引用指向的对象」和「替换变量的引用」这两个操作。如果是直接修改原数组(比如num.splice(0)或者num.length = 0),那result也会变成空数组,因为它们指向同一个对象;但这里是给num换了个新的引用目标,和result没关系了。

内容的提问来源于stack exchange,提问作者meruvu likith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:24:43