삼항연산자는 세개의 항으로 이루어지는 연산자로 조건문을 통해 다른 값을 반환 해 줄수 있습니다.
조건?true일때:false일때
이런식으로 조건문뒤에 물음표(?)을 붙이고 조건문이 true일때의 표현식, 그뒤에 콜론(:)을 붙인뒤 false일때의 표현식이 붙습니다.
var x=1;
var y=2;
var a = x < y ? y : x;
console.log(a);
결과
>
2
이런식으로 x와 y값을 비교해서 그 비교결과가 참이냐 거짓이냐로 다른 값을 반환해줄 수 있습니다.
바로 위에서 보신 예시의 구조를 보시면 if else 문과 유사한데요 비교를 해보 겠습니다.
var x = 1;
var y = 2;
if (x < y) {
console.log(y);
} else {
console.log(x);
}
var a = x < y ? y : x;
console.log(a);
결과
>
2
2
둘의 결과는 똑같이 나옵니다. 그래서 값을 반환하는 결과를 바라는 것이라면 삼항 연산자 쪽이 if else문 보다 짧은줄의 코드로 같은 결과를 볼 수 있다고 생각합니다.
조건문엔 if()와같이 조건문의 표현식이 Boolean()을 이용해 얻은 true/false 값이 들어가기 때문에 논리식을 사용하지 않아도 됩니다.
var a = 0 ? true : false;
console.log(a);
var b = null ? true : false;
console.log(b);
var c= -1?true:false;
console.log(c);
결과
false
false
true
위 결과를 보시면 0이나 null은 Boolean()함수로 판별했을때 false, -1은 0이 아닌 정수이기때문에 true가 반환되는것을 확인할 수 있습니다.
삼항조건식은 값을 반환하는 결과라면 if문보다 짧은 코드로 작성할 수 있고 굳이 논리식이 아니어도 가능하다.