본문 바로가기
JavaScript

JavaScript 논리연산자

by 하이방가루 2022. 1. 19.
728x90
반응형

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연산자의 우선순위는 모든 논리 연산자 중에서 가장 높기 때문에 항상 '&&'나 '||'보다 먼저 실행된다.

728x90
반응형

'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

댓글