현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.
삼항 조건 연산자(conditional ternary operator) 는 세 개의 피연산 함수를 취할 수 있는 유일한 자바스크립트 연산자이다. 이 연산자는 if
문의 축약형으로 빈번히 사용된다.
문법
condition ? expr1 : expr2
파라미터
- 조건
- true 혹은 false로 평가되는 표현식
expr1
,expr2
- 모든 형식의 값을 지닌 표현식
상세설명
조건이 true이면
, 연산자는 expr1의 값을 반환하며, 반대의 경우 expr2를 반환한다. 이를테면, isMember 변수의 값을 기초로 상이한 메시지를 보여주고자 한다면, 다음과 같이 표현할 수 있다.
"The fee is " + (isMember ? "$2.00" : "$10.00")
또한 다음과 같이 삼항의 결과에 따라 변수를 할당할 수도 있다.
var elvisLives = Math.PI > 4 ? "Yep" : "Nope";
다음의 예제처럼, 다중 상항 평가도 가능하다(주의: the conditional operator is right associative)
var firstCheck = false, secondCheck = false, access = firstCheck ? "Access denied" : secondCheck ? "Access denied" : "Access granted"; console.log( access ); // logs "Access granted"
You can also use ternary evaluations in free space in order to do different operations:
var stop = false, age = 16; age > 18 ? location.assign("continue.html") : stop = true;
You can also do more than one single operation per case, separating them with a comma:
var stop = false, age = 23; age > 18 ? ( alert("OK, you can go."), location.assign("continue.html") ) : ( stop = true, alert("Sorry, you are much too young!") );
You can also do more than one operation during the assignation of a value. In this case, the last comma-separated value of the parenthesis will be the value to be assigned.
var age = 16; var url = age > 18 ? ( alert("OK, you can go."), // alert returns "undefined", but it will be ignored because // isn't the last comma-separated value of the parenthesis "continue.html" // the value to be assigned if age > 18 ) : ( alert("You are much too young!"), alert("Sorry :-("), // etc. etc. "stop.html" // the value to be assigned if !(age > 18) ); location.assign(url); // "stop.html"
명세
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Conditional Operator' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'The conditional operator' in that specification. |
Standard | |
ECMAScript 1st Edition (ECMA-262) The definition of 'The conditional operator' in that specification. |
Standard | Initial definition. Implemented in JavaScript 1.0. |
브라우저 호환
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |