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

JavaScript按引用传值时param=[1]为何输出0?调换行得[0,2]

问题解析:数组参数赋值与引用的关系

一、原代码中param = [1]的作用与结果

JavaScript里数组属于引用类型,当你把data传入changeData函数时,参数param最初和data指向内存中同一个数组(即[0])。

但执行param = [1]这行代码时,你是给param变量重新赋值了一个全新的数组对象——此时param的指向完全脱离了原来的data数组,转而指向新创建的[1]数组。

后续的param.push(2)操作只会修改这个新数组,让它变成[1,2],但这和原本的data数组毫无关联,所以最终data仍然是最初的[0]。

二、调换代码顺序后结果变化的原因

如果调换函数内两行代码的顺序:

function changeData(param) {
  param.push(2);
  param = [1];
}

第一步执行param.push(2)时,param还和data指向同一个数组,这个push操作会直接修改原数组,将data变成[0,2]。

之后执行param = [1],只是给param赋值新数组,但原数组已经被修改完成,所以最终data的结果就是[0,2]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:22:08