논리연산자가 생각보다 많이쓰이는데
종종 헷갈려서 정리해봅니다!
// 논리 부정 (logical NOT)
!true; // false
!false; // true
// 논리합 (logical OR) : 둘 중 하나라도 true면 true
true || true; // true
true || false; // true
false || true; // true
false || false; // false
// 논리곱 (logical AND) : 둘 다 true여야 true
true && true; // true
true && false; // false
false && true; // false
false && false; // false
// 할당 연산 (assignment operators), ES2021
// ||= 는 변수의 값이 true이면 아무 변화가 일어나지 않고
// false이면 우항의 값이 변수에 할당됩니다.
let x = false;
x ||= true; // true
// &&= 는 변수의 값이 false이면 아무 변화가 일어나지 않고
// true이면 우항의 값이 변수에 할당됩니다.
let y = true;
y &&= false; // false
// ||=와 &&=는 각각 아래 연산과 같은 동작을 합니다.
x = x || true
y = y && false
// 삼항 연산자 (ternary operator)
true ? 1 : 2; // 1
false ? 1 : 2; // 2
연산자 우선순위 (Operator Precedence)
자세한 내용은 MDN 링크를 참고
true || true && false; // true
(true || true) && false; // false
true || false && false; // true
(true || false) && false; // false
아래에 있는 것들은 falsy한 값으로 인식되고
나머지는 전부 truthy한 값으로 인식됩니다.
false
null
undefined
0
NaN
''
어떤 값을 명시적으로 boolean 타입으로 변환해야 하거나, 그 값을 boolean값으로 변환하면 어떤 값인지 알고싶을 때, 두 가지 방법을 사용할 수 있습니다.
!!'hello'; // true
Boolean('hello'); // true
!은 여집합, ||는 합집합, &&는 교집합, true는 전체집합, false는 공집합이라고 생각하면 조금 더 이해가 쉬울 것 같습니다!