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

这段JavaScript代码中的choices数组发生了什么变化?

问题解答

核心结论

原始choices数组不会被修改,也不会生成新的数组引用。

具体说明

  • 你代码中对choices的唯一操作是通过下标读取对应元素:choices[Math.floor(Math.random() * choices.length)] 仅会把对应下标的字符串值取出赋值给randomChoice,不会改动数组本身的元素、长度,也没有修改数组引用的操作。
  • 由于你用const声明了choices变量,连它的引用地址都被锁定,你无法把choices重新赋值为另一个数组或者其他类型的值。

拓展:什么操作会修改原choices数组?

只有对数组执行元素增删改、调用修改原数组的原生方法时才会改动原数组,例如:

// 修改指定下标元素
choices[0] = 'stone';
// 尾部新增元素
choices.push('lizard');
// 尾部删除元素
choices.pop();
// 反转数组(直接修改原数组)
choices.reverse();

你的代码中不存在这类操作,所以choices会一直保持初始化时的['rock', 'paper', 'scissors']状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 23:36:03