LHJ

I'm a FE developer.

5.8.2 피연산자가 불리언이 아닐 때 논리 연산자가 동작하는 방법

21 Apr 2020 » js_lj

불리언 피연산자를 사용하면 논리 연산자는 항상 불리언을 반환합니다.
피연산자가 불리언이 아니라면, 결과를 결정한 값이 반환됩니다.
[표 5-5]와 [표 5-6]을 보십시오.

표 5-5 불리언이 아닌 피연산자에 대한 AND(&&)의 진위표

xyx && y
거짓 같은 값거짓 같은 값x (거짓 같은 값)
거짓 같은 값참 같은 값x (거짓 같은 값)
참 같은 값거짓 같은 값y (거짓 같은 값)
참 같은 값참 같은 값y (참 같은 값)

표 5-6 불리언 아닌 피연산자에 대한 OR(||)의 진위표

xyx || y
거짓 같은 값거짓 같은 값y (거짓 같은 값)
거짓 같은 값참 같은 값y (참 같은 값)
참 같은 값거짓 같은 값x (참 같은 값)
참 같은 값참 같은 값x (참 같은 값)

결과를 불리언으로 변환하면 불리언 값을 제공했을 때의 진위표와 같은 결과가 됩니다.
논리 연산자의 이런 동작 방식을 활용하는 간편한 팁이 있습니다.
다음 패턴은 아주 자주 쓰고, 또 보게 될 겁니다.

const options = suppliedOptions || { name: "Default" }

객체는 항상(빈 객체더라도) 참 같은 값으로 평가됩니다.
따라서 suppliedOptions 가 객체이면 options는 suppliedOptions를 가리키게 됩니다.
옵션이 제공되지 않으면 즉 suppliedOptions 가 null이나 undefined라면 options는 기본값을 갖게 됩니다.

NOT 은 불리언이 아닌 값을 반환할 수 없으므로 ! 연산자는 피연산자의 타입이 무엇이든 항상 불리언을 반환합니다.
피연산자가 참 같은 값이면 false를, 거짓 같은 값이면 true를 반환합니다.