2014-05-11 3 views
2

종종 함수의 코드를 작성합니다. 특정 값이 정의되었는지 확인하거나 즉시 false 값을 반환해야합니다. 그러나 을 쓰는 경우 블록이 너무 많은 타이핑을 느낀다.값을 읽거나 반환하십시오.

function getSomethingByModel(model) { 
    var id = model.id; 

    if (! id) { 
     return; 
    } 

    // rest of the code 
} 

뭔가 같은 : 가능 대신 작성하는 것입니다

function getSomethingByModel(model) { 
    var id = model.id || return; 
    // rest of the code 
} 

이 순수 미학의 문제가 아니라 기능입니다. 어느 정도

+0

나는이 경우 결코 '리턴', 항상 잡기 (이 실제 응용 프로그램에서 발생하지 않기 때문에) 오류를 처리 할 –

+0

나는'경우 (모델처럼 쓸 것입니다. id) false를 반환합니다. 두 번째 발췌 문장은 유효한 JavaScript가 아니며, 달성하려는 내용이 덜 명확하다는 것을 알았습니다. – Jonathan

답변

1

, 당신은 성가신 if 문이 작업을 수행하고 방지하기 위해 && 연산자를 사용할 수 있습니다 프로세스의 모든 단계가 falsey의 값을 생성하는 경우

function getSomethingByModel(model) { 
    var id = model && model.id, 
     thing = id && getThingById(id), 
     otherThing = thing && getOtherThingFromThing(thing); 

    return otherThing || null; // or alternatively, just return otherThing; 
} 

을, 논리는 빠르게로를 통해 떨어질 것 null (위의 대체 문 return 문을 사용하는 경우 첫 번째 잘못된 값이 표시됨).

+1

이것은 어떻게 질문과 관련이 있습니까? o_O –

+0

@newboyhun 질문은 null/undefined/falsey 값을 만나면 나머지 함수 단계를 실행하지 못하게하려는 상황을 간결하게 처리하는 방법을 묻는 것입니다. 내 예제에서는이를 수행하는 방법을 보여줍니다. – JLRishe

+0

AESTHETICS 질문은 '이러한 문제를 다루는 방법'이 아닙니다. –

0

함수의 상단에 (또는 호이 스팅 때문에) 모든 속성을 정의한 다음 지정의 부작용을 사용하여 반환 할 수 있습니다. 예를 들면 다음과 같습니다!

function getSomethingByModel(model) { 
    var id; 

    if(!(id = model.id)) return false; 
    // rest of the code 
} 
관련 문제