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

Javascript 这段代码中的choices数组发生了什么变化?,javascript,Javascript,我知道计算机正在从choices数组生成随机选择,但由于某些原因,我看不到原始choices数组的连接。是更改了选择数组还是创建了另一个引用?我就是不明白 const choices = ['rock', 'paper', 'scissors']; let userChoice; let computerChoice; const generateComputerChoice = () => { const randomChoice = choices[Math.floor(Ma

我知道计算机正在从choices数组生成随机选择,但由于某些原因,我看不到原始choices数组的连接。是更改了选择数组还是创建了另一个引用?我就是不明白

const choices = ['rock', 'paper', 'scissors'];
let userChoice;
let computerChoice;

const generateComputerChoice = () => {
    const randomChoice = choices[Math.floor(Math.random() * choices.length)];
    computerChoice = randomChoice;
    computerChoiceDisplay.innerHTML = 'Computer choice: ' + computerChoice;
};

选项
数组只有相同的数组,相同的内存地址,完全相同的东西。

选项[…]
表示“评估
,然后获得
选项的第N个索引(N=
)”

在这种情况下,它的意思是:

  • 获取一个介于0和1之间的随机十进制数
  • 将其乘以选择数
  • 楼层编号(2.9=>2等)
  • 在数组中获取该索引
你也可以这样写:

const generateComputerChoice=()=>computerChoiceDisplay.innerHTML='Computer choice:'+['rock','paper','scissors'][Math.floor(Math.random()*['rock','paper','scissors'].length];
另一种写作方式是:

const choices=[“石头”、“布”、“剪刀”];
const generateComputerChoice=()=>{
让randomFloatingPoint=Math.random();
让randomDecimalFrom0To3=randomFloatingPoint*choices.length;
让randomIndex=数学楼层(randomDecimalFrom0To3)
const randomChoice=选项[randomIndex];
computerChoiceDisplay.innerHTML='计算机选项:'+随机选项;
};

Connection:
choices[Math.floor(Math.random()*choices.length)]
Hi,我理解。也许我问这个问题的方式不对.JS范围规则。函数内部使用的
choices
数组是函数外部定义的数组。choices数组没有发生任何变化,对吧,但是为什么是Math.floor(Math.random()在数组内部。为什么它不在数组外部或不与数组链接。我想这是我绊倒的原因。谢谢你的帮助。我正在学习Javascript。我上面提到过,但是为什么Math.floor(Math.random()是在数组内部。它为什么不在数组外部或链接到数组上。我想这就是让我感到困惑的原因。谢谢你的回复。
[]
的意思是“访问该索引”。它不在数组内部。基本上,它的意思是“从该数组中获取随机值”。哦,就像书[I],正在访问索引。我现在明白了。第一次看到这么长的数组…谢谢