조건에 따라 다른 값을 변수에 할당해줘야 할 때 사용.
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
주위의 괄호는 생략 가능, 물음표 연산자는 우선순위가 낮으므로 비교연산자>
가 실행되고 난 뒤에 실행된다.비교연산자
자체가true
나false
를 반환하기 때문에 위 예시에서 물음표 연산자를 사용하지 않아도 된다.
물음표 연산자
?
를 여러개 연결하면 복수의 조건을 처리할 수 있다.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
를 사용해야한다.