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

执行checking_plus_1函数后数组是否会更新?原因是什么?

关于checking_plus_1调用后array是否更新的判断

你给出的相关代码片段如下:

for(let i = array.length - 1; i > 0; i--){
    if(k < test.length){
        checking_plus_1(combine, array, test[k])
        if(array[i] == 100 && array[i-1] == 100){
            array[i] = array[j];
            array[i-1] = array[j-1];
            array[j] = test[k];
            array[j-1] = test[k];
            combine[j] = test[k];
            combine[j-1] = test[k];
            changeRowtoZero_minus_1(combine, array, i, i-1)
        }
    }
}
具体结论
  • 按照你现在的传参写法,JavaScript里数组是引用类型,只要checking_plus_1内部对传入的数组做原地修改(比如按下标改元素值、调用splice/push/sort这类直接改动原数组的方法),外层的array就会同步更新。
  • 如果执行完函数后array没有任何变化,只会是以下两类原因:
    • checking_plus_1内部根本没对传入的数组做原地写操作:要么函数只是读取数组值做计算返回,没有修改逻辑;要么函数内部先把传入的数组做了拷贝,所有修改都作用在内部新建的数组副本上,根本没碰传进来的原数组。
    • checking_plus_1内部误改了形参的指向:比如函数里写了array = [/* 一堆新值 */]这种直接给形参变量重新赋值的代码,这类操作只会改函数作用域内的局部变量指向,完全影响不到外层的原数组。
  • 额外提一句你贴的这段循环的逻辑:调用checking_plus_1之后的所有数组修改代码,都要满足array[i] == 100 && array[i-1] == 100的判断条件才会执行。如果checking_plus_1本来预期要把对应位置的值改成100但实际没生效,后面整个修改块根本不会跑,从外层看就会表现为数组完全没更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:39:24