논리 연산자

이말감·2021년 10월 23일
0

JavaScript

목록 보기
11/13

https://ko.javascript.info/logical-operators

자바스크립트엔 세 종류의 논리 연산자 ||(OR), &&(AND), !(NOT)이 있다.

||(OR)

result = a || b;

OR 연산자는 이항 연산자이므로 아래와 같이 네 가지 조합이 가능하다.

alert(true || true); // true
alert(false || true); // true
alert(true || false); // true
alert(false || false); //false

피연산자가 모두 false인 경우를 제외하고 연산 결과는 항상 true이다.
피연산자가 불린형이 아니면, 평가를 위해 불린형으로 변환된다.
숫자 1은 true로, 숫자 0은 false로 바뀐다.

첫 번째 truthy를 찾는 OR 연산자 '||'

OR 연산자와 피연산자가 여러 개인 경우 :

result = value1 || value2 || value3;

OR 연산자는 다음 순서에 따라 연산을 수행한다.

  • 가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가한다.
  • 각 피연산자를 불린형으로 변환한다. 변환 후 그 값이 true이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환한다.
  • 피연산자 모두를 평가한 경우(모든 피연산자가 false로 평가되는 경우)엔 마지막 피연산자를 반환한다.

여기서 핵심은 반환 값이 형 변환을 하지 않은 원래 값이라는 것이다.
정리) OR "||" 연산자를 여러 개 체이닝하면 첫 번째 truthy를 반환한다.
피연산자에 truthy가 하나도 없다면 마지막 피연산자를 반환한다.

alert(1 || 0); // 1 ( 1은 truthy)
alert(null || 1); // 1 (1은 truthy)
alert(null || 0 || 1); // 1
alert(undefined || null | 0); // 0 (모두 falsy이므로, 마지막 값을 반환함)

&&(AND)

result = a && b;
alert(true && true); // true
alert(false && true); // false
alert(true && false); // false
alert(false && false); // false

첫 번째 falsy를 찾는 AND 연산자 '&&'

result = value1 && value2 && value3;

AND 연산자 &&는 아래와 같은 순서로 동작한다.

  • 가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가한다.
  • 각 피연산자는 불린형으로 변환된다. 변횐 후 값이 false이면 평가를 멈추고 해당 피연산자의 변환 전 원래 값을 반환한다.
  • 피연산자 모두가 평가되는 경우(모든 피연산자가 true로 평가되는 경우)엔 마지막 피연산자가 반환된다.

정리) AND 연산자는 첫 번째 falsy를 반환한다.
피연산자에 falsy가 없다면 마지막 값을 반환한다.

alert(1 && 0); // 0
alert(1 && 5); // 5
alert(null && 5); // null
alert(0 && "아무거나 와도 상관없음"); // 0
profile
전 척척학사지만 말하는 감자에요

0개의 댓글