2011-08-15 4 views
2

가능한 중복은 :
Question mark in JavaScript이 구문의 의미는 무엇입니까?

나는 몇 번 주위를 본 적이하지만 난 그게 무슨 뜻인지 몰랐어요. 그 이름은 무엇이며 어떻게 작동합니까?

input.checked = input.type == "radio" ? true : false; 
+1

당신이 여기에 등호가되어야한다는 확신이 마치'== input.type' input.checked? – shanethehat

+1

자주 묻는 이러한 종류의 여분의 코드는 보이지 않기를 바랍니다. – hugomg

+0

* exact * 코드입니까? 조금 의심 스럽네요 ... URL이 있습니까? – FrustratedWithFormsDesigner

답변

6

예를 그것에 추가 =을 가지고, 나는 당신이 의미 생각 :

input.checked = input.type == "radio" ? true : false; 

(. 그것은 지금은 고정 된 것)

그것은 할당 trueinput.type == "radio", 또는 false 경우 경우 input.checked에 그렇지 않습니다.

expression ? trueResult : falseResult 

... 조건 연산자라고 (또는 때때로

그건은 "삼항"연산자 기술적   —, 그것은 그냥 삼항 연산자, 예를 들어, 세를 취하는 작업자의 피연산자). 사양에 Section 11.12에 더 있습니다. 등가 식의 결과가 어쨌든 true 또는 false 때문에이 경우

는 조건 연산자를 사용하여 절대적으로 아무 문제가 없다, 그래서 그냥 쓸 수 있습니다 :

input.checked = input.type == "radio"; 

을 ...하지만이 조건부 연산자가 유용한 장소가 많이 있습니다.

x = y == 42 ? 1 : 2; 

당신은 ? 생각할 수를 예스 또는 노 질문을하지 않기 때문에, 그것은 "이되는 다음과 무엇을 함께 : 예를 들어, 당신은 y 여부 (42)이었다에 따라 x-1 또는 2를 할당하고 싶어한다고 가정 예 "응답이고, 뒤에" "대답은"아니오 "입니다.

+0

"삼항 연산자"가 falseResult 값을 요구합니까 ?? 내가 원한다면 그냥 뺄 수 있습니까? – 0x499602D2

+0

@David : 조건 식의 값 ('?'앞에 나오는 표현식)은 일반적인 자바 스크립트 규칙에 따라 부울이 아닌 경우 부울로 강제 변환됩니다 ('if' 성명서). 나는 당신이 "그걸 버릴 수 있느냐?"라는 말이 무슨 뜻인지 확신 할 수 없다. 만약 당신이 질문에'true' 또는'false'를 할당했다면, 앞에서 말했듯이, 조건부 연산자는 필요 없습니다.'checked'에 직접 결과를 할당하십시오. 그러나'true' 또는'false' 이외의 것을 지정하고 싶다면, 조건 연산자는 어떤 상황에서는 그것을하는 편리한 방법입니다. –

+0

@David : 오, 미안, 무슨 뜻인지 알 겠어. 예, 조건부 연산자를 사용할 때 허위 부분이 필요합니다. ':'와 표현식의 끝 사이에 뭔가가 있어야합니다. 그렇지 않으면'if' 또는 JavaScript의 [호기심 강력한'||'및'&&'연산자] (http://blog.niftysnippets.org/2008/02/javascripts-curiously-powerful-or.html)를 사용하십시오. –

3

이 어쩌면 이렇게 이해하기 쉽게 :

input.checked = (input.type == "radio")? true : false; 

그것은 기본적으로의 다른 경우 여기

내가 본 예입니다. 표현식이 참이면 input.checked이 첫 번째 값으로 설정되고, 그렇지 않으면 두 번째 값으로 설정됩니다.

[편집] 참고로

뿐만 아니라 유형 평등을 확인하는 문자열을 평가할 때 자바 스크립트에서, 당신은 항상 대신 '=='의 '==='를 사용한다.

+0

- input.checked에 대해서는 double ==에 유의하십시오. 임무가 아니라 비교입니다. –

+0

아, 그리워, 내 대답을 편집했습니다. 그것을 지적 주셔서 감사합니다. – Snps

+0

@ 존, 나는 OP가 오타가 있다고 확신한다. –

0

이것은 3 진 표현식입니다.

if (input.type == "radio") { 
    input.checked = true; 
} else { 
    input.checked = false; 
} 

그러나이 특정 예에서는 중복성이 있습니다.

input.checked = input.type == "radio"; 
+0

삼항 연산자가 잘못된 결과 값을 요구합니까? 내가 원한다면 나는 그것을 버릴 수 있느냐 ?? – 0x499602D2

+0

@David 예 (첫 질문에). 아니오 (귀하의 두 번째). –

0

어쩌면 처음 ===이다 : 그것은 단순히 같이 쓸 수 있었다?

ternary operator. (짧은 다른-경우 구조)

+0

삼항 연산자가 잘못된 결과 값을 요구합니까 ?? 내가 원한다면 나는 그것을 버릴 수 있느냐 ?? – 0x499602D2

+0

자바 스크립트가 필요합니다. 'a = (x == 3)와 같은 것을 할 수 없습니까? 5 = 그렇지만 이렇게 할 수 있습니다.'a = (x == 3)? 5 : a'. 거짓 결과가 나오면 'a'는 'a'와 같습니다. –

관련 문제