자바스크립트엔 세 종류의 논리 연산자 ||(OR), &&(AND), !(NOT)이 있습니다.
||(OR), &&(AND), !(NOT)
하나씩 알아봅시다.
‘OR’ 연산자는 두 개의 수직선 기호로 만들 수 있습니다.
result = a || b;
프로그래밍에서 보통 OR 연산자는 불린값을 조작하는 데 쓰입니다.
인수 중 하나라도 true 이면 true를 반환하고, 그렇지 않으면 false를 반환하죠.
OR 연산자는 이항 연산자이므로 아래와 같이 네 가지 조합이 가능합니다.
alert( true || true ); // true
alert( false || true ); // true
alert( true || false ); // true
alert( false || false ); // false
좌우 값이 false 인 경우를 제외하고 연산 결과는 항상 true입니다.
if (1 || 0) {
alert( 'truthy!' );
}
예시1 : OR 연산자가 여러개인 경우
result = value1 || value2 || value3;
가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가합니다.
각 피연산자를 불린형으로 변환합니다. 변환 후 그 값이 true이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환합니다.
피연산자 모두를 평가한 경우(모든 피연산자가 false로 평가되는 경우)엔 마지막 피연산자를 반환합니다.
여기서 핵심은 반환 값이 형 변환을 하지 않은 원래 값이라는 것입니다.
아래 코드를 보며 이해해봅시다.
let firstName = "";
let lastName = "";
let nickName = "바이올렛";
alert( firstName || lastName || nickName || "익명"); // 바이올렛
두 개의 앰퍼샌드를 연달아 쓰면 AND 연산자 &&를 만들 수 있습니다.
result = a && b;
전통적인 프로그래밍에서 AND 연산자는 두 피연산자가 모두가 참일 때 true를 반환합니다. 그 외의 경우는 false를 반환하죠.
alert( true && true ); // true
alert( false && true ); // false
alert( true && false ); // false
alert( false && false ); // false
result = value1 && value2 && value3;
가장 왼쪽 부터 시작해 오른쪽으로 나아가며 평가합니다.
불린형으로 변환합니다.
변환한 값이 false면 평가를 멈추고 value에 있는 값을 반환합니다.
value값이 모두 평가 될 경우 마지막 value를 반환합니다.
alert( 1 && 2 && null && 3 ); // null
논리 연산자 NOT은 느낌표 !를 써서 만들 수 있습니다.
result = !value;
불린형으로 변환합니다.
변환된 값의 역을 반환합니다.
예시
alert( !true ); // false
alert( !0 ); // true```
NOT을 !! 두 개 연달 아 사용하면 Boolean()과 값이 같습니다.
alert( !!"non-empty string" ); // true
alert( !!null ); // false
위 코드와 같습니다.
alert( Boolean("non-empty string") ); // true
alert( Boolean(null) ); // false