논리 연산자
논리 연산자는 주로 불리언(논리적) 값과 함께 사용됩니다. 그때 논리 연산자는 불리언 값을 반환합니다. 그러나 &&와 || 연산자는 실제로는 피연산자 중에 하나의 값을 반환하기 때문에, 이 연산자가 불리언 값이 아닌 값과 함께 사용되면 불리언 값이 아닌 값을 반환할 것입니다. 다음 표에 논리 연산자에 대해서 설명했습니다.
연산자 | 사용법 | 설명 |
---|---|---|
&& | expr1 && expr2 | (논리적 AND) expr1이 false로 변환될 수 있으면 expr1을 반환하고, 그렇지 않으면 expr2를 반환합니다. 그러므로 불리언 값과 같이 사용하면 피연산자 둘 모두가 true일 때 &&는 true를 반환하고 그렇지 않을 때는 false를 반환합니다. |
|| | expr1 || expr2 | (논리적 OR) expr1이 true로 변환될 수 있으면 expr1을 반환하고 그렇지 않으면 expr2를 반환합니다. 그러므로 불리언 값과 같이 사용하면 ||는 피연산자 중에서 하나만 true이면 true를 반환합니다. 둘 다 false이면 false를 반환합니다. |
! | !expr | (논리적 NOT) 피연산자가 true로 변환될 수 있으면 false를 반환합니다. 그렇지 않으면 true를 반환합니다. |
표 3.7: 논리 연산자
false로 변환될 수 있는 표현식은 null, 0, 빈 문자열(""), undefined로 평가될 수 있는 표현식들입니다.
다음 코드는 && 연산자를 사용하는 예를 보여줍니다.
a1=true && true // t && t returns true a2=true && false // t && f returns false a3=false && true // f && t returns false a4=false && (3 == 4) // f && f returns false a5="Cat" && "Dog" // t && t returns Dog a6=false && "Cat" // f && t returns false a7="Cat" && false // t && f returns false
다음 코드는 || 연산자를 사용하는 예를 보여줍니다.
o1=true || true // t || t returns true o2=false || true // f || t returns true o3=true || false // t || f returns true o4=false || (3 == 4) // f || f returns false o5="Cat" || "Dog" // t || t returns Cat o6=false || "Cat" // f || t returns Cat o7="Cat" || false // t || f returns Cat
다음 코드는 ! 연산자를 사용하는 예를 보여줍니다.
n1=!true // !t returns false n2=!false // !f returns true n3=!"Cat" // !t returns false
단축 평가
논리 표현식이 왼쪽부터 오른쪽으로 평가되기 때문에 다음 규칙을 이용해서 "단축(short-circuit)" 평가를 할 수 있습니다.
-
false
&& 아무 표현식은 false로 단축 평가 됩니다. -
true
|| 아무 표현식은 true로 단축 평가 됩니다.
이 규칙을 따라 평가를 수행한다고 해서 피연산자를 모두 평가할 때와 결과가 달라지지 않습니다. 아무 표현식 부분은 평가되지 않기 때문에 아무런 부수 효과(side effect)도 일어나지 않는다는 것에 주의하십시오.