논리연산자

Kaydenna92·2022년 12월 18일
0

JavaScript

목록 보기
14/15

|| (OR)

인수 중 하나라도 true이면 true를 반환하고, 그렇지 않으면 false를 반환한다.

console.log(true || true); // true
console.log(false || true); // true
console.log(true || false); // true
console.log(false || false); // false
  • 피 연산자가 모두 false인 경우를 제외하고 연산 결과는 항상 true
  • 피 연산자가 불린형이 아니라면, 평가를 위해 불린형으로 변환된다.
if (1 || 0) { // 연산과정에서 1은 true, 0은 false로 변환.
  console.log('truthy!');
}

첫 번째 truthy를 찾는 OR

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

result = value1 || value2 || value3;

이때, OR연산자의 연산 수행 순서.

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

    여기서 Point!

    반환 값이 형 변환을 하지 않은 원래의 값이라는 점.

    정리하면,
    OR 연산자를 여러 개 체이닝하면 첫 번째 truthy를 반환한다.
    피연산자에 truthy가 하나도 없다면 마지막 피연산자를 반환한다.

OR 연산의 활용

1. 변수 또는 표현식으로 구성된 목록에서 첫 번째 truthy 얻기.

firstName, lastName, nickName이란 변수가 있는데 이 값들은 모두 옵션 값이라고 생각하자.
OR연산을 사용하면 실제 값이 들어있는 변수를 찾고, 그 값을 보여줄 수 있다.
변수 모두에 값이 없는 경우엔 익명을 보여주자.

let firstName = '';
let lastName = '';
let nickName = '복숭아';
console.log(firstName || lastName || nickName || '익명'); // 복숭아

2. 단락 평가

  • OR을 왼쪽부터 시작해서 오른쪽으로 평가를 진행하는데, truthy를 만나면 나머지 값들은 건드리지 않은 채 평가를 멈춘다. 이를 단락 평가라고 한다.
  • 단락 평가의 동작 방식은 두 번째 피연산자가 변수 할당과 같은 부수적인 효과를 가지는 표현식일때 명확히 볼 수 있다.
  • 단락 평가는 연산자의 왼쪽 조건이 falsy할 경우에 자주 사용한다.
true || console.log('not printed'); // true를 만나자마자 평가가 끝남.
false || console.log('printed'); 

&& (AND) 연산자

두 피 연산자가 모두 참일때 true를 반환한다.
AND 연산자 &&의 우선순위는 OR 연산자보다 높다.

console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
let hour = 12;
let minute = 30;
if (hour == 12 && minute == 30) {
  alert('현재 시각은 12시 30분이다.');
}

AND 연산의 활용

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

result = value1 && value2 && value3

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

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

    여기서 Point!

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

// 첫번째 피 연산자가 truthy이면, 두 번째 피연산자를 반환한다.
console.log(1 && 0) // 0
console.log(1 && 5) // 5
// 첫 번째 피연산자가 falsy이면, 첫 번째 피연산자를 반환하고, 두 번째 피연산자는 무시한다.
console.log(null && 5); // null
console.log(0 && '아무거나 써도 안보여줌'); // 0
console.log(1 && 2 && null && 3) // null
console.log(1 && 2 && 3) // 3

!(NOT)

  • 논리 연산자 NOT는 느낌표를 써서 만들 수 있다.
  • NOT을 두개 연달아 사용하면 값을 불린형으로 변환할 수 있다.
  • NOT연산자의 우선순위는 모든 논리연산자 중에서 가장 높다.
    NOT 연산자는 인수를 하나만 받고, 다음 순서대로 연산을 수행한다.
    1. 피연산자를 불린형으로 변환한다.
    2. 1에서 변환된 값의 역을 반환한다.
profile
persistently

0개의 댓글