我很难理解代码究竟是如何将值返回到randFace();
我已经理解了rand(0,5)的使用,因此它可以随机生成一个恰好是[“crown”,“锚”,...]数组长度的数字。
我无法理解代码的工作原理。比方说,rand(0,5)将3作为数字返回,然后我确实认为randFace()会返回“spade”,但是怎么回事?
function rand(m, n) {
return m + Math.floor((n - m + 1)*Math.random());
}
// randomly returns a string representing one of the six
// Crown and Anchor faces
function randFace() {
return ["crown", "anchor", "heart", "spade", "club", "diamond"]
[rand(0, 5)];
}
答案 0 :(得分:1)
这是您的代码,为了更容易理解而重写。做同样的事情。只提取了两个变量并给它们命名。
function randFace() {
var faces = ["crown", "anchor", "heart", "spade", "club", "diamond"];
var faceIndex = rand(0, 5);
return faces[faceIndex];
}
答案 1 :(得分:1)
执行array[index]
时,您将获得该数组中位置index
的元素。如果没有元素,则默认返回undefined
。
您的代码是这样的缩写版本:
function rand(m, n) {
return m + Math.floor((n - m + 1) * Math.random());
}
function randFace(m,n) {
var array = ["crown", "anchor", "heart", "spade", "club", "diamond"];
var index = rand(m,n);
return array[index]
}
console.log(randFace(0,5))
console.log(randFace(10,15))
因此,当您执行functionName(args)
时,将首先调用函数,并将输出传递给父作用域。因此,当您执行[...][rand(0,5)]
时,首先会执行rand(0,5)
。
输出将用作索引值以获取数组中的元素。
正如@ sergio tulentsev正确评论,在以下行
中return ["crown", "anchor", "heart", "spade", "club", "diamond"][rand(0,5)]
执行顺序为
["crown", "anchor", "heart", "spade", "club", "diamond"]
rand(0,5)
和输出将传递给第二个[]
[]
并将获取元素