簡體   English   中英

我無法理解這段代碼是如何工作的

[英]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)]

執行順序是

  1. 初始化數組: ["crown", "anchor", "heart", "spade", "club", "diamond"]
  2. 然后rand(0,5)和輸出將傳遞給第二個[]
  3. 第二個[]將被執行並獲取元素
  4. 獲取的值將被返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM