자바스크립트가 지원하는 논리 연산자는 AND(&&)와, OR(||), NOT(!) 세 가지입니다.
수학을 공부했다면 AND는 교집합(conjunction), OR은 합집합(disjunction), NOT은 부정(negation)으로 이해할 수 있을 겁니다.
(거의) 무한한 숫자와 달리 불리언은 단 두 가지 밖에 없으므로 논리 연산은 진위표(truth table) 로 나타낼 때가 많습니다.
[표 5-2]부터 [표 5-4]까지를 보십시오.
표 5-2 AND(&&) 연산의 진위표
x | y | x && y |
---|---|---|
false | false | false |
false | true | false |
true | false | false |
true | true | true |
표 5-3 OR(||) 연산의 진위표
x | y | x || y |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | true |
표 5-4 NOT(!) 연산의 진위표
x | !x |
---|---|
false | true |
true | false |
테이블을 보면 AND 연산은 피연산자가 모두 true일 때만 true이고, OR 연산은 피연산자가 모두 false일 때만 false임을 알 수 있습니다.
NOT은 단순히 피연산자를 반대로 바꿉니다.
피연산자가 모두 true이면 결과도 true이기 때문에 OR 연산자는 가끔 포괄적(inclusive) OR이라 불리기도 합니다.
배타적(exclusive) OR, 또는 XOR이라 불리는 OR도 있습니다.
이 연산자는 피연산자가 모두 true이면 false를 반환합니다.
자바스크립트에는 XOR에 해당하는 논리 연산자가 없지만, 나중에 설명할 비트 XOR은 있습니다.
TIP
변수 x와 y의 XOR 연산이 필요하다면 동등한 표현식
(x || y) && x !== y
를 사용하면 됩니다.