2010-07-12 6 views
4

반환 할 true 또는 false 값으로 끝나야하는 자바 스크립트 코드가 있습니다. 참/거짓 값을 계산 그러나, 원래의 값과 같이 여러 기능을 통과 한 :여러 함수를 통해 부울 값을 반환합니다.

var txt = 'foo'  
function one(txt) { 
if(txt == 'foo') { two(txt); } 
} 
function two(txt) { 
if(txt == 'foo') { three(txt); } 
} 
function three(txt) { 
if(txt == 'foo') { return true; } 
else { return false; } 
} 

물론이 예는 작은 점을 가지고 있지만 그것을 통해 일반 포인트를 가져옵니다. 내가해야 할 일은 (또는 false) 값을 함수 one()에있는 모든 함수의 three()에서 반환하고 함수 one()은 그 값을 호출 한 값으로 반환해야합니다. 나는 하나의 함수로 돌아 가기 위해 함수 two()을 거쳐야한다고 가정하고 있는데, 변수로 이것을 할 수있는 방법이 있습니까? 그냥 생각. 어떤 도움을 주셔서 대단히 감사합니다!

+1

질문을받지는 않았지만'return two (txt);와'return three (txt);를 쓰면 어떨까요? –

답변

5

당신이 시도 할 수있는 (내가 제대로 질문을 이해 경우) 다음

function one(txt) { 
    if(txt == 'foo') return two(txt); 
    else return false; 
} 

function two(txt) { 
    if(txt == 'foo') return three(txt); 
    else return false; 
} 

function three(txt) { 
    if(txt == 'foo') return true; 
    else return false; 
} 
+0

왜 '|| 거짓? –

+0

boolean-'return two (새로운 Boolean (txt)); 또는'return two (!! txt);'-'|| false'. –

+0

@Fabio :'|| 거짓 부분. 모든 함수가 true 또는 false를 반환하면 필요하지 않습니다. –

2

호출을 three() 및 two()로 변경하여 three()를 반환하고 two()를 반환합니다.

+0

'foo'가 아닌 다른 것을'one()'함수에 넘겨 주면 여전히 undefined를 리턴합니다. –

0

시도 :

var txt = 'foo'  
function one(txt) { 
if(txt == 'foo') return two(txt); 
else return false; 
} 
function two(txt) { 
if(txt == 'foo') return three(txt); 
else return false; 
} 
function three(txt) { 
if(txt == 'foo') return true; 
else return false; 
} 
+0

'one'과'two'도'else' 케이스가 필요합니다. 그렇지 않으면 조건이 false 일 때 아무것도 반환하지 않습니다. – tzaman

0

당신이 만약 원 사업자와 같은 :

function one(txt) { 
    return (txt == 'foo') ? two(txt) : false; 
} 
function two(txt) { 
    return (txt == 'foo') ? three(txt) : false; 
} 
function three(txt) { 
    return (txt == 'foo'); 
} 
0

당신에게 위에서 말한 것처럼 그렇게 할 수 있습니다. 또는 함수 외부에서 변수를 선언하여 전역 변수로 참조 할 수 있습니다. 위대한 관행으로 간주되지 않지만 작동 할 것입니다.

0
var txt = 'foo'; 

function one(txt) { 
    return two(txt); 
} 

function two(txt) { 
    return three(txt); 
} 

function three(txt) { 
    return txt == 'foo' 
} 
+1

왜이 코드를 제안했는지에 대한 몇 가지 단어가 더 좋을 것입니다. – junix

+0

다른 유형과 마찬가지로 부울을 처리하기 때문에 가장 좋다고 생각합니다. 그것은 또한 가장 단순하고, 필요하다면 다른 것을 필요로하지 않습니다. 부울은 함수 3에서 테스트로 생성되고 스택으로 전달됩니다. – BarryBurns

+0

@BarryBurns가 맞습니다. 이것은 기능 구성의 한 예입니다. ''txt' === ('three' 중'two')'txt'. 이는 부울 초기 종료 예제보다 바람직합니다. 조건부를 사용하여 부울을 반환하는 것을 피할 수 있기 때문입니다 (부울 조건이 true 또는 false로 평가되므로 불필요하며 모순을 반환하기 쉽고 혼란 스럽습니다). 더 많은 함수를 함께 구성하여 복잡한 조건을 만들 수 있습니다. –

관련 문제