예제부터 보자
console.log(true ? true : false && false);
// 결과: true
처음 로직을 짤때 내 생각은 이랬다.
'삼항연산자로 앞에서 조건을 필터링하고 그 결과를 논리(&&) 연산자로 다시 검증해야지'
위 로직이 내가 생각한대로 삼항연산자를 먼저 실행시키려면 괄호()
를 이용해야한다.
true ? true : false && false // true
(true ? true : false) && false // false
괄호를 치지 않는다면 다음과 같은 순서로 실행이 된다.
true ? true : (false && false)
// false && false => false
// 다음과 같이 변환됨 =>
true ? true : false // true
mdn docs를 확인해보자
연산자 우선순위
왼쪽에 번호는 실행 우선순위로 조건(삼항) 연산자의 우선순위는 3으로 논리 AND 연산자(5)보다 낮은 것을 확인할 수 있다.
연산자와 조건을 섞어 사용할때는 괄호()
를 활용하거나 우선순위를 잘 고려하도록 하자