논리 연산자가 반드시 true, false를 반환하는 것이 아니라 평가 결과에 따라 피연산자를 반환하는 특징을 다시 생각해 보면 다음과 같은 값도 구할 수 있습니다.
"cat" && "dog"; // "dog"
"cat" && "dog" && "bird"; // "bird"
OR 연산자(||)는 피연산자를 왼쪽부터 평가해 참으로 평가된 피연산자를 즉시 반환합니다. 만약 모든 피연산자가 참으로 평가되지 않으면 마지막에 평가된 피연산자를 반환합니다.
false || true || false; // true
false || false; // false
false || "cat"; // "cat"
"" || "cat"; // "cat"
"dog" || "cat"; // "dog"
NOT 연산자(!)는 피연산자나 식을 평가한 논리 값의 반대 값(true → false, false → true)을 반환합니다.
!false; // true
!(10 < 20); // false
!(10 < 20 && 20 < 10); // true