[英]I can't understand how this code works
我在理解代碼究竟是如何將值返回給 randFace() 時遇到了麻煩;
我已經理解了 rand(0,5) 的用法,因此它可以隨機生成一個數字,該數字恰好是 ["crown", "anchor",..] 數組的長度。
我無法理解代碼的工作原理。 假設 rand(0,5) 以數字形式返回 3,那么我確實知道 randFace() 會返回“黑桃”,但是如何?
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)];
}
這是您的代碼,為了更容易理解而重寫。 做同樣的事情。 只提取兩個變量並給它們命名。
function randFace() {
var faces = ["crown", "anchor", "heart", "spade", "club", "diamond"];
var faceIndex = rand(0, 5);
return faces[faceIndex];
}
當您執行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)
,將首先調用 function 並將輸出傳遞給父作用域。 因此,當您執行[...][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)
和輸出將傳遞給第二個[]
[]
將被執行並獲取元素
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.