[javascript] 논리연산자

hana jeong·2022년 12월 3일
0

모던자바스크립트

목록 보기
5/15

논리 연산자

  • ||(OR)
    인수 중에 하나라도 true면 true를 반환하고 그렇지 않으면 false를 반환한다를 기본으로 깔고 감
예시)
console.log(true || false); // true
console.log(false || true); // true

만약 피연산자가 불린형이 아니면 평가를 위해 불린형으로 변환됨

if(0 || 1) {
  console.log('true'); // 0은 false, 1은 true
}

연산자와 피연산자가 여러개인 경우
or연산자는 가장 왼쪽 피연산자부터 오른쪽 피연산자까지 차례대로 나아가며 피연산자를 평가
그 다음 각 피연산자를 불린형으로 변환함 그 후 그 값이 true이면 연산을 멈추고 첫 번째 truthy를 반환하며 해당 피연산자의 변환 전 원래 값을 반환함
피연산자를 모두 평가한 후 모든 피연산자가 false이면 맨 마지막 연산자를 반환함

console.log( 0 || 1 ); // 1 (0은 falsy니까)
console.log( null || 2 ); // 2 (null도 falsy니까)
console.log( null || 0 || 1 ); // 1 (null과 0 둘다 falsy니까)
console.log( undefined || null || 0 ); // 0 (모두다 falsy니까 마지막 값 반환);
  • &&(AND)
    and연산자는 두 피연산자 모두가 참일 때 true 반환하고 그 외에는 false반환함
예시)
console.log(true && false); // false
console.log(false && true); // false
console.log(true && true); // true
console.log(false && false); // false

or연산자와 마찬가지로 and연산자의 피연산자 타입에 제약이 없다

if (1 && 0) { 
  console.log(실행될까?);
}
// 피연산자가 숫자형으로 들어와있지만 논리형으로 바뀌어 1은 true로, 0은 false로 변환됨         

and연산자가 여러개인 경우 or연산자와 알고리즘은 비슷하다
다만 차이점은 and 연산자가 첫 번째 falsy를 반환하며 모든 피연산자가 true로 평가되는 경우 마지막 피연산자가 반환됨

console.log( 0 && 1 ); // 0 (1은 truthy니까)
console.log( 1 && 3 ); // 3 (모든 피연산자가 true니까 마지막 피연산자가 반환됨)
console.log( null && 0 && 1 ); // null (첫 번째 피연산자가 falsy면 첫 번째 피연산자 반환)
console.log( 0 && "하하" ); // 0 
  • ! (NOT)
    not 연산자는 인수를 하나만 받는다. 그 후 피연산자를 불린형(t/f)로 변환한다
    그 후 변환된 값의 역을 반환한다
console.log( !false ); // true
console.log( !0 ) // true

not을 연달아 두 개 사용하면 값을 불린형으로 변환할 수 있다

console.log( !!"배고파" ); // true
console.log( !!null ); // false

참고로 내장함수 Boolean을 사용하면 !!을 사용한 것과 같은 결과를 낼 수 있음

console.log(Boolean(!!"배고파")); // true
console.log(Boolean(!!null)); // false
profile
https://developer-hh.tistory.com 로 옮깁니다

0개의 댓글