2014-03-07 2 views
-1

큰 숫자의 json 데이터를 백 엔드에서 가져 오는 중 데이터를 두 번 확인해야만 해당 데이터를 사용할 수 있습니다. 중첩 된 if에서 내 코드가 제대로 작동 중입니다. 중첩 된 ternary 조건으로 변경하고 싶습니다. 다음은 내 코드 (Fiddle)중첩 된 삼항 연산자를 더 최적화 된 방법으로 작성하는 방법

JS입니다 : 이것은 아직 시도 무엇

var x = /* Some big JSON data */,fx,yy; 
if(x){ 
    yy = $.parseJSON(decodeURIComponent(x)); 
    yy ? fx = yy.products.length : fx =0; 
}else{ 
    fx = yy = 0; 
} 

(작동하지 않는) :

x ? ($.parseJSON(decodeURIComponent(x)),(yy ? fx = yy.products.length : fx =0;)) : (fx = yy = 0); 

이, 그것은 것 솔직히 Fiddle

+2

작동하는 무언가를 당신이 이해하려고 노력할 때 당신이 그것을 이해할만큼 충분히 이해할 수 없을 정도로 복잡합니다. 나는 이것이 왜 좋은 생각이라고 생각 하는가? – Jon

+0

어렵고 복잡한 상황에서'ternary'보다'else'를 사용하는 것이 더 낫습니다. – tnanoba

+3

한 줄에 모든 것이 "최적화"되었다고 생각하는 이유는 무엇입니까? –

답변

2

입니다 이 글을 쓰는 것이 훨씬 편하다.

var x = /* whatever */, fx = 0, yy = 0; 

if (x && yy = $.parseJSON(decodeURIComponent(x))) { 
    fx = yy.products.length; 
} 

이는 독자에게 즉시 명확합니다.

(여전히 삼항 연산자) 관용적 자바 스크립트로 작성하는 또 다른 방법이 될 것입니다 당신은 또한 과제로 yyfx의 선언을 결합하여 한 줄에 쓸 수

var x = /* whatever */, yy, fx; 
yy = $.parseJSON(decodeURIComponent(x)) || 0; 
fx = (yy && yy.products.length) || 0; 

. 그것은 삼항 연산자보다 적은 한 문장입니다. 그래서 문장 수를 "최적화"한다면 왜 그렇게하지 않습니까?

+0

'0 ||'은 관용적이지 않고 생략 될 수 있습니다. '|| 0 '? – Bergi

+0

@Bergi : 물론 머리를 가져 주셔서 감사합니다. – Jon

관련 문제