Level 1의 프로그래머스 문제를 풀이하던 중, 다른 사람 풀이 코드에서 삼항연산자의 존재를 알게 되어 정리해보려고 한다.
'물음표 연산자'는 일반적으로 쓰는 if문
을 좀 더 간결하게 한 문장으로 나타낼 수 있다.
'?' 연산자
코드 예시)
선언할 변수명 = 조건문 ? true일 경우의 값 : false일 경우의 값
let result = condition ? value1 : value2;
조건 condition이 true일 경우 value1을, 그렇지 않을 경우 value2를 출력한다.
물음표 연산자는 우선순위가 낮으므로 비교 연산자가 있을 경우 비교연산자가 먼저 실행되고 난 뒤에 실행된다.
조건문에서 비교 연산자를 쓸 시에
괄호가 있으나 없으나 차이는 없지만, 코드의 가독성 향상을 위해 괄호를 사용하는 것이 좋다고 한다
물음표 연산자는 다중으로도 쓸 수 있는데,
다중 '?'
다중 물음표 연산자는 true, false의 조건을 여러 개로 연결하여 처리할 수 있다.
밑에 코드와 같이 사용가능하다.
let age = prompt('나이를 입력해주세요.', 18);
let message = (age < 3) ? '아기야 안녕?' :
(age < 18) ? '안녕!' :
(age < 100) ? '환영합니다!' :
'나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';
alert( message );
위에 코드는 if / else if / else
와 비슷한 구조인 것 같다.
조건문에서 값이 트루일 경우 '아기야 안녕?'을 출력하고 그렇지 않을 경우,
다음으로 나타내어진 조건이 트루일 때 '안녕!'을, 그렇지 않을 경우
또 위와 같이 반복하여 복수 조건으로 사용가능하다.
이 코드를 if..else
를 사용하여 나타내보면, 아래와 같이 나타낼 수 있다.
if (age < 3) {
message = '아기야 안녕?';
} else if (age < 18) {
message = '안녕!';
} else if (age < 100) {
message = '환영합니다!';
} else {
message = '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';
}
하지만 물음표 연산자
를 모든 if문
대신으로 쓰게 되면, 오히려 가독성이 떨어질 수 있다.
코드를 읽을 때 우리의 눈은 수직으로 움직이기 때문에, 수평으로 길게 늘어진 코드보단
여러 줄로 나뉘어 작성된 코드 블록이 사용자에게 더 읽기 쉽다고 한다.
따라서 물음표 연산자
는 조건에 따라 반환 값을 달리하려는 목적으로 만들어졌기 때문에,
목적에 부합하는 곳에 물음표를 사용하여야 하고 만약 여러 분기를 만들어 처리해야 할때는
if조건문
을 사용하는 것이 좋다고 한다