2017-12-11 4 views
0

나는이 질문이 어리석게 들린다는 것을 알고있다. 그러나 나는 그것이 가능한 것을 가능하게 만드는 방법을 모른다. 여기 개체 속성이 정의되기 전에 개체 속성에 액세스 할 수 있습니까?

내 코드입니다 : 내가 randomSecondaryNation === (객체를 비교할 경우

function createPerson() { 

    var x1 = Math.floor(Math.random()*101); // Random number picker 

    var personObject = { 
    primaryNation: primNation(), 
    secondaryNation: secNation(), 
    }; 

    function createRandomNation() {    //Random nation picker 

    var nations = ["Germany", "USA", "France"]; 
    var randomNation = nations[Math.floor(Math.random() * nations.length)]; 
    return randomNation; 
    } 



    function primNation(){ 

    var randomPrimaryNation = createRandomNation(); 
    return randomPrimaryNation; 
    } 


    function secNation() { 

    var randomSecondaryNation = []; 

    if (x1 >= "10") { 
     randomSecondaryNation = createRandomNation(); 
     if (randomSecondaryNation === personObject.primNation){  //// <---There is the problem 
     randomSecondaryNation = false; 
     } 
    } 
    else { 
     randomSecondaryNation = false; 
    } 

    return randomSecondaryNation; 
    } 
    console.log(personObject); 
} 

문제이지만, 그것은 정의 "완료"되지

는 별도 만들 수있는 유일한 방법입니다. ? 개체와 함께를 지정하거나이이 작업을 수행 할 수있는 스마트/빠른 방법입니다

감사합니다!

다음
+0

왜 하나 전화를 걸 수 있으며, 1 차 및 2 차와 객체를 반환하지? – epascarello

+1

당신이하려는 것은 의미가 없습니다. 무작위로 생성 된 2 차 국가와 아직 존재하지 않는 2 차 국가를 비교하고 있습니다. 또한 x1이 숫자이고 "10"이 문자열 일 때'x1> = "10"이면 비교할 수 있습니다. 또한,'randomSecondaryNation'은 배열로 시작하여'createRandomNation()'반환 값의 문자열이되고, if/else 조건에서는'false'로 설정됩니다. 변수가 배열, 문자열 및 부울 인 이유는 무엇입니까? 너 정확히 뭘 하려구? 시도해 보지 않은 문제를 해결해 보겠습니다. – mhodges

+0

@epascarello하지만 함수를 한 번 호출하고이 두 가지 속성을 어떻게 쓸 수 있습니까? – Andy

답변

0

당신이 두 가지 기능을 결합 할 수있는 방법입니다,하지만 randomSecondaryNation이 배열로 시작한 다음 문자열 값이 할당되고 조건부로 부울이되는 이유는 아직 불확실합니다. 이것에 대한 좋은 이유가있을 수 있지만, 내 경험상, 이것은 일어날 기다리고있는 버그입니다. 어쨌든, 여기 당신은 간다 :

function createPerson() { 
 

 
    var x1 = Math.floor(Math.random()*101); // Random number picker 
 
    
 
    function createRandomNation() {    //Random nation picker 
 
    var nations = ["Germany", "USA", "France"]; 
 
    var randomNation = nations[Math.floor(Math.random() * nations.length)]; 
 
    return randomNation; 
 
    } 
 
    
 
    function generateNations() { 
 
    var randomPrimaryNation = createRandomNation(); 
 
    var randomSecondaryNation = []; 
 

 
    if (x1 >= "10") { 
 
     randomSecondaryNation = createRandomNation(); 
 
     if (randomSecondaryNation === randomPrimaryNation){ 
 
     randomSecondaryNation = false; 
 
     } 
 
    } 
 
    else { 
 
     randomSecondaryNation = false; 
 
    } 
 

 
    return { 
 
     primaryNation: randomPrimaryNation, 
 
     secondaryNation: randomSecondaryNation 
 
    }; 
 
    } 
 
    
 
    var personObject = generateNations(); 
 
    console.log(personObject); 
 
} 
 

 
createPerson(); 
 
createPerson(); 
 
createPerson();

+1

완벽! 고마워요! – Andy

+1

나는이 작업을하기 위해 약 4 시간 정도 앉아 있었다. – Andy

+0

전에 metioned 한 버그가 발생했다 : D – Andy

관련 문제