2012-02-21 6 views
1

아무것도 사용 예를 들어, 자바 스크립트에서 더 이상 조건문 대신 삼항 연산자를 사용하여 문제가 있습니까 :삼항 연산자 짧은 조건문

(variable == "dog") ? dog_stuff() : false; 

오히려이 같은 소리 수

if (variable == "dog") 
{ 
    dog_stuff(); 
} 

보다 어리석은 질문이지만 나는 그것을 읽는 것이 꽤 쉽고 빠르다는 것을 안다, 나는 단지 그것이 가능한 단점이 있다면 그것을 사용하고 싶지 않다? 당신이 다른 문이없는 경우

+0

이항 연산자를 사용할 때 잘못 알았습니다. –

+0

@Michael,'? '왼쪽에있는 피연산자는 조건문이며 아무 것도 전달하지 않습니다. '전체 구조? b : c'는 표현식입니다. 그것은 부작용에 대해 평가되고 있기 때문에이 경우 이상하게 보입니다. 그리고 그 반환 값은 버려지고 있습니다. –

+0

@IanClelland 예. 내 눈이'= '로 남겨진 채로'(변수 == "개")를 본 것처럼 내 의견이 이해가되지 않습니다. 곧 삭제 ... –

답변

5

또한

(variable == 'dog') && dog_stuff(); 

을 작성할 수 있습니다.

backbone.js에서 몇 라인 :

options || (options = {}); 
    models = _.isArray(models) ? models.slice() : [models]; 
    model = this.getByCid(models[i]) || this.get(models[i]); 

그룹화 할 수 있습니다 여러 문, 그것은 매우 필요하다면 : 당신과 다른 사람이있는 한 형식으로 쉽게 이해로

(1==1) && (a=2,b=3) 
alert(a); // 2 
alert(b); // 3 
+0

어색하지만 기능을 결합하는 깔끔한 방법으로 보입니다. – Mikhail

+0

고마워요, 정확히 내가 찾고 있었던 것입니다. – Dormouse

+0

영리를 위해 +1을 주었지만 솔직히 아무도 이것을 해보지 마십시오. 효율성, IMO는 가독성에 대한 단점이 있습니다. 이 부분에 – Mikhail

1

코드를 읽어야 할 수도 있습니다.

+0

+1. 10자를 더 짧게 할 수도 있지만 지나치게 영리한 내용에 대해 명확하고 간결한 코드를 작성하는 것이 좋습니다. – Stephen

3

false을 실행하도록 코드를 말하고 있기 때문에 잘못되었습니다. 다음 코드를 상상해보십시오 :

if (variable == "dog") 
{ 
    dog_stuff(); 
} else { 
    false; 
} 

IMO 4 라인 조건부 함수 호출이 완벽합니다. 당신은 그것을 나타내는 표현 할 수 있습니다

if (variable == "dog") dog_stuff(); 

당신이 그것을 주석, 또는 일이 올바른 보이지만, 제대로 실행하지 않는 한 후 1보다 기능을 추가하는 경우이 유일한 문제는 다음과 같습니다있다

if (variable == "dog") dog_walk(); dog_bark(); // dog_bark executes always! 
if (variable == "dog") // dog_walk(); 
earn_cash(); // suddenly earn_cash() is dog-dependent. 
+0

나는이 때문에 조건문을 줄이는데 항상 경계를 두었지만 3 진 연산자를 사용하면 불확실한 종속성에 대한 걱정을 없애고 상당히 명확하게 처리 할 수 ​​있습니다. – Dormouse

+0

보통 대괄호를 인라인으로 넣습니다. if (condition) {execute(); }' – Mikhail