자바스크립트엔 세 종류의 논리 연산자 ||
(OR), &&
(AND), !
(NOT)이 있습니다.
연산자에 '논리’라는 수식어가 붙긴 하지만 논리 연산자는 피연산자로 불린형뿐만 아니라 모든 타입의 값을 받을 수 있습니다. 연산 결과 역시 모든 타입이 될 수 있습니다.
지금까진 피연산자가 불린형인 경우만을 다뤘습니다. 전통적인 방식이죠. 이제 자바스크립트에서만 제공하는 논리연산자 OR의 '추가’기능에 대해 알아보겠습니다.
추가 기능은 아래와 같은 알고리즘으로 동작합니다.
OR 연산자와 피연산자가 여러 개인 경우:
result = value1 || value2 || value3;
이때, OR ||
연산자는 다음 순서에 따라 연산을 수행합니다.
true
이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환합니다.false
로 평가되는 경우)엔 마지막 피연산자를 반환합니다.여기서 핵심은 반환 값이 형 변환을 하지 않은 원래 값이라는 것입니다.
정리해 보자면 이렇습니다. OR "||"
연산자를 여러 개 체이닝(chaining) 하면 첫 번째 truthy를 반환합니다. 피연산자에 truthy가 하나도 없다면 마지막 피연산자를 반환합니다.
예시:
alert( 1 || 0 ); // 1 (1은 truthy임)
alert( null || 1 ); // 1 (1은 truthy임)
alert( null || 0 || 1 ); // 1 (1은 truthy임)
alert( undefined || null || 0 ); // 0 (모두 falsy이므로, 마지막 값을 반환함)
이런 OR 연산자의 추가 기능을 이용하면 여러 용도로 OR 연산자를 활용할 수 있습니다.
아래 예시에선 AND 연산자의 피연산자가 모두 truthy이기 때문에 마지막 피연산자가 반환됩니다.