OR연산자 ||
첫 번째 truthy를 찾아준다.
모든 피연산자가 falsy이면 마지막 피연산자를 반환한다.
let result = value1 || value2 || value3;
- 가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가한다.
- 각 피연산자를 불린형으로 변환하고 그 값이 true이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환한다.
- 피연산자를 모두 평가했을 때 모든 피연산자가 false로 평가되는 경우 마지막 피연산자의 변환 전 원래 값를 반환한다.
ex) alert( nickName || name || "익명" )
// 모든 변수가 falsy이면 "익명"이 출력된다.
ref) alert( alert(1) || 2 || alert(3) )
// alert메서드는 값을 반환하지 않기 때문에 undefined로 읽힌다.
// 따라서 alert(1)을 평가하면서 1이 출력되고 undefined로 판단하기 때문에 다음 피연산자를 평가하게 된다.
// 다음 피연산자는 2로 truthy이기 때문에 실행이 멈추고 2가 반환되며 제일 바깥 alert의 피연산자가 되어 2가 출력된다.
// alert(3)은 평가되지 않기 때문에 3은 출력되지 않는다.
AND연산자 &&
첫 번째 falsy를 찾아준다.
모든 피연산자가 truthy이면 마지막 피연산자를 반환한다.
let result = value1 && value2 && value3;
- 가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가한다.
- 각 피연산자를 불린형으로 변환하고 그 값이 false이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환한다.
- 피연산자를 모두 평가했을 때 모든 피연산자가 true로 평가되는 경우 마지막 피연산자의 변환 전 원래 값를 반환한다.
let result = ( x != 0 ) && ( 100 / x ) // x가 0이 아니면 100/x한 값이 반환된다.
&&의 우선순위가 ||보다 높다.
따라서 a && b || c && d 는 ( a && b ) || ( c && d) 와 동일하게 동작한다.
NOT연산자 !
NOT연산자는 인수를 하나만 받고 피연산자를 불린형으로 변환한 뒤
변환된 값의 역을 반환한다.
NOT을 두 개 연달아 사용(!!)하면 값을 불린형으로 변환할 수 있다.
NOT연산자의 우선순위는 모든 논리 연산자 중에서 가장 높기 때문에 항상 '&&'나 '||'보다 먼저 실행된다.
'JavaScript' 카테고리의 다른 글
JavaScript break/continue와 레이블 (0) | 2022.01.20 |
---|---|
JavaScript nullish병합연산자 '??' (0) | 2022.01.19 |
JavaScript 동등연산자'=='와 일치연산자'===' (0) | 2022.01.19 |
JavaScript '+'연산자 (0) | 2022.01.17 |
JavaScript 형 변환 (0) | 2022.01.17 |
댓글