[TIL / JavaScript] 물음표 연산자

Changyun Go·2021년 8월 6일
post-thumbnail

조건부(conditional) 연산자


  • 물음표(question mark) 연산자라고도 불린다.
  • 조건문을 더 짧고 간결하게 변형할 수 있다.
  • 조건부 연산자는 물음표로 표시하며 피연산자가 3개인 유일한 삼항(ternary) 연산자이다.
let result = condition ? value1 : value2;
  • 평가 대상인 condition이 truthy라면 value1이, 그렇지 않으면 value2가 반환된다.
let accessAllowed = age > 18 ? true : false;
  • 물음표 연산자는 우선순위가 낮으므로 비교 연산자가 먼저 실행된다. → 조건문을 괄호로 감쌀 필요가 없다.
let age = prompt('나이를 입력해주세요.', 18);

let message = (age < 3) ? '아기야 안녕?' :
  (age < 18) ? '안녕!' :
  (age < 100) ? '환영합니다!' :
  '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';

alert( message );
  • 물음표 연산자를 여러 개 연결하면 복수의 조건을 처리할 수 있다.

잘못된 사용

let company = prompt('자바스크립트는 어떤 회사가 만들었을까요?', '');

(company == 'Netscape') ?
   alert('정답입니다!') : alert('오답입니다!');

if 문을 사용할 때 보다 코드 길이가 짧아진다는 점 때문에 물음표 연산자를 if 대신 사용하는 게 매력적일 수 있지만 가독성이 떨어진다.

let company = prompt('자바스크립트는 어떤 회사가 만들었을까요?', '');

if (company == 'Netscape') {
  alert('정답입니다!');
} else {
  alert('오답입니다!');
}
  • 코드를 읽을 때 우리의 눈은 수직으로 움직인다. → 수평으로 길게 늘어진 코드보다 여러 줄로 나뉘어 작성된 코드 블록이 더 읽기 쉽다.
  • 물음표 연산자는 조건에 따라 반환 값을 달리하려는 목적으로 만들어졌다.

P.S.

코드 길이가 짧아진다고 무조건 좋은 코드가 아니다😬

참고 문서


0개의 댓글