这段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。
相关产品推荐
相关产品推荐

