2016-09-16 1 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

다음은 이해를 돕기 위해 다시 작성한 코드입니다. 똑같은 일을한다. 오직 두 개의 변수 만 추출하여 이름을 부여했습니다. 당신이 array[index]을 수행 할 때

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

, 그 배열의 위치 index에서 요소를 얻을 것이다. 요소가 없으면 기본값으로 undefined이 반환됩니다. 당신이 functionName(args)을 수행 할 때

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))
가 그래서, 함수가 먼저 호출되고 출력은 상위 범위로 전달됩니다

당신의 코드는 다음과 같이 짧은 버전입니다. 따라서 [...][rand(0,5)]을 실행하면 먼저 rand(0,5)이 실행됩니다.

출력은 배열의 요소를 가져 오는 인덱스 값으로 사용됩니다.

는 올바르게 실행

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

주문 될 광고는 다음의 @sergio tulentsev 의해 주석

  1. 초기화 어레이 : ["crown", "anchor", "heart", "spade", "club", "diamond"]
  2. 이어서 rand(0,5) 출력이 제 []
  3. 전달 될
  4. 두 번째 []이 실행되고 el 결과가 반입됩니다.
  5. 값이 반납됩니다.