조건문 연산자 '?' - 삼항연산자

Soozynn·2021년 5월 15일
0
post-thumbnail

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조건문을 사용하는 것이 좋다고 한다

0개의 댓글