여기서 괄호는 필수가 아니며 기능에 영향을 주지 않지만 결과가 어떻게 처리되는지 시각화하는 데 도움이 된다.
삼항 평가는 다른 연산을 하기 위해 쓸 수도 있다.
1 2 3
var stop = false, age = 25;
age > 30 ? location.assign('continue.html') : stop = true;
하나의 케이스 당 두 개 이상의 단일 작업을 수행하려면 쉼표로 구분하고 괄호로 묶어라.
1 2 3 4 5 6 7 8 9
var stop = false, age = 25;
age > 30 ? ( alert('ok, you can go.'), location.assign('continue.html') ) : ( stop = true, alert('sorry, you are much too young!') );
값을 할당하는 동안 하나 이상의 연산도 가능하다. 이 경우에, 괄호 안의 값 중 마지막 쉼표 다음의 값이 최종 할당 값이 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13
var age = 25;
var url = age > 30 ? ( alert('Ok, you can go'), // alert는 undefined를 반환하지만 마지막 쉼표 다음의 값이 아니므로 무시된다. 'continue.html'// 이 값이 age > 30일때 할당된다. ) : ( alert('You are much too young!'), alert('sorry :('), 'stop.html'// age > 30이 아닐때 이 값이 할당된다. );
location.assign(url); // 'stop.html'
삼항 연산자로 if…else 문 대체하기
삼항 연산자는 if/else문을 사용하는 함수를 반환하는 데 적합하다.
if…else문 삼항 연산자로 변환하기
예제1
1 2 3 4 5 6 7 8 9 10
// if...else문 var x = 11; var res; if (x === 0) { res = '영'; } elseif (x % 2 === 0) { res = '짝수'; } else { res = '홀수'; }
1 2 3 4 5
// 삼항 연산자 x= 11;
var result = x === 0 ? '숫자 영' : x % 2 === 0 ? '짝수' : '홀수' ; console.log(result);
예제2
1 2 3 4 5
// if...else문 var func1 = function(..) { if (condition1) { return value1 } else { return value2 } }