조건부 연산자

Kaydenna92·2022년 12월 18일
0

JavaScript

목록 보기
13/15

'?'

조건에 따라 다른 값을 변수에 할당해줘야 할 때 사용.

let accessAllowed;
let age = prompt('나이를 입력해', '');
if (age > 18) {
  accessAllowed = true;
} else {
  accessAllowed = false;
}
alert(accessAllowed);
  • 물음표 연산자 = 조건부 연산자 = '?' 를 사용하면 위의 예시를 더 짧고 간결하게 변형할 수 있다.
  • 자바스크립트에서 피연산자를 3개나 받는 연산자는 조건부 연산자가 유일

문법

let result = condition ? value1 : value2
let accessAllowed = (age > 18) ? true : false
  • 평가 대상인 condition이 truthy라면 value1이, 그렇지 않으면 value2가 반환된다.
  • age > 18 주위의 괄호는 생략 가능, 물음표 연산자는 우선순위가 낮으므로 비교연산자 >가 실행되고 난 뒤에 실행된다.
  • 비교연산자 자체가 truefalse를 반환하기 때문에 위 예시에서 물음표 연산자를 사용하지 않아도 된다.

다중 ' ?'

물음표 연산자 ?를 여러개 연결하면 복수의 조건을 처리할 수 있다.

let age = prompt('나이 입력', '');
let message = (age < 3) ? 'hello baby?' : 
	(age < 18) ? 'hello' : 
	(age < 100) 'hello sir?' : 
	'나이가 아주 많거나, 나이가 아닌 값을 입력했다.';
alert(message)

부적절한 '?'

물음표 ?if 대용으로 쓰는 경우가 종종 있다.

let company = prompt('자바스크립트는 어떤 회사가 만든건가?', '');
(company == 'Netscape') ? 
  alert('정답'); : alert('오답');

이런 식으로 코드를 작성하면 가독성이 떨어진다.
물음표 연산자는 조건에 따라 반환 값을 달리하려는 목적으로 만들어졌다.
이런 목적에 부합하는 곳에 물음표 연산자를 사용하고, 여러 분기를 만들어 처리할 때는 if를 사용해야한다.

profile
persistently

0개의 댓글