Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

삼항 조건 연산자

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

삼항 조건 연산자(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)

참고

문서 태그 및 공헌자

 이 페이지의 공헌자: webix
 최종 변경: webix,