2012-01-23 4 views
0

어떻게 삼항 연산자 작업을 이해하기 위해 노력하고있어 나는 예를 건너 왔어요 :이상한 삼항 연산자 자바 스크립트

b.d >= mystr.length && (function1(b, a), a=0); 

& &은 무엇을 의미합니까? AND 연산자처럼 사용됩니까? 이것이 정규 진술로 어떻게 변환됩니까? a = 0 이전의 혼수 상태는 무엇을 의미합니까? 감사!

+4

이것은 삼항 연산자되지 않습니다 :에

a > b ? functionIfTrue() : functionIfFalse(); 

그것은 논리적으로 동일하다 : 완성도를 위해서

는 여기 삼항 연산자입니다. –

+1

&&는 여러 언어로 쓰여 있기 때문에 AND입니다. 그러나 또한, http://stackoverflow.com/q/8916679/422184 – Ktash

+0

의 사본 이것은 말도 안되게 읽을 수없는 코드입니다. 누가 그런 식의 코드를 작성합니까? ಠ_ಠ –

답변

1

&&은 AND 연산자입니다. 왼쪽이 true이면 오른쪽을 평가합니다 (반환). ,은 쉼표 연산자입니다. 쉼표 연산자는 왼쪽에서 오른쪽으로 반환하고 오른쪽에서 반환합니다. 따라서이 코드는 다음과 같은 :

if (b.d>=mystr.lengh) { 
function1(b,a); 
a=0; 
} 

(제외 당신의 코드를 반환 0)

(내 모국어가 어쩌면 내가 틀렸다, C,하지만 내가 생각하는 그런이 경우, 자바 스크립트 작업 C)

0

&& 연산자는 논리 AND 연산자입니다. 왼쪽에서 오른쪽으로 표현식을 평가하고 첫 번째 거짓 값 또는 마지막 표현식의 값을 반환합니다.

마지막 표현식에 도달하면 그 값을 반환합니다. 그래서

:

var x = (1 < 2) && (4 > 3) && 'fred'; 

세트 X 반면, "프레드"다음

var y = (1 < 2) && 0 && 'fred'; 

세트 Y0한다.

2

그건 삼자가 아닙니다. 또한

해당 그룹핑 연산자 내부 콤마 기본적 기가 항상 예 항상 falsy 인 (FALSE 또는 0 중 어느 하나를 평가하는 것으로 0

이다 마지막 표현식 a=0의 값을 반환하는 것을 보장).

편집

:

if (a > b){ 
    functionIfTrue(); 
} else { 
    functionIfFalse(); 
} 
+0

감사합니다. 정상적인 진술처럼 보이게 보여 주시겠습니까? "> ="은 무엇을 의미합니까? 삼중 연산자가 아닌가요? 어떤 조건에서 함수가 호출됩니까? – user1015551

+0

'> = '는 "보다 크거나 같음"을 의미합니다. 삼항 연산자는 if/else 문을 작성하는 간단한 방법입니다. 이 경우,'function1'은'mystr.length'가'b.d'의 값보다 작은 경우에만 호출 될 것입니다. 'mystr.length'가'b보다 작지 않은 경우.d' 다음에'&&'다음에 오는 나머지 부분은 중요하지 않으므로 평가되지 않습니다. –