2016-09-16 5 views
0

コードがrandFace()に値をどのくらい正確に返しているか理解できません。このコードの動作を理解できません

私はrand(0,5)の使用法を理解しているので、ランダムに["crown"、 "anchor"、..]配列の長さになる数を生成できます。

私はコードの動作を理解できません。たとえば、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)]; 
} 

答えて

1

ここではわかりやすいように書き直されたコードです。同じことをしますか?抽出された2つの変数のみが名前を付けました。あなたがarray[index]を行うと

function randFace() { 
    var faces = ["crown", "anchor", "heart", "spade", "club", "diamond"]; 
    var faceIndex = rand(0, 5); 
    return faces[faceIndex]; 
} 
1

、あなたはその配列内の位置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)が実行されます。

出力は配列の要素を取得するためのインデックス値として使用されます。その後["crown", "anchor", "heart", "spade", "club", "diamond"]

  • rand(0,5)と出力が第二[]
  • に渡されます:として正しく実行の行

    return ["crown", "anchor", "heart", "spade", "club", "diamond"][rand(0,5)] 
    

    注文は

    1. は配列を初期化するだろう以下に、sergio tulentsev @でコメントし

    2. 第2の[]が実行され、el結果はフェッチされます
    3. フェッチされた値が返されます。
    関連する問題