참고자료
💡 typescript 구문 내 타입 검사를 하던 도중,
&&를 이용한 논리연산식 결과가 boolean일 수도 있고, undefined일 수도 있다는 것을 보고어째서 논리연산 결과값이 undefined일 수도 있는가?에 대해 알아보다가 새롭게 알게 된 Javascript 논리연산 특징에 대해 정리하는 글
컴퓨터는 논리 연산 이라는 과정을 통해 true인지 false인지 상황을 판단하고 명령을 수행한다.
이러한 논리 연산에서 사용되는 것이 논리 연산자이다.
ex) 논리곱 AND(&&), 논리합 OR(||), 논리부정 NOT(!)
&&)false라면 오른쪽 피연산자는 평가하지 않는다. (단축평가)||)true라면 오른쪽 피연산자는 평가하지 않는다. (단축평가)int a = 5;
if (a && true) { // 컴파일 오류: 논리 연산자는 boolean 타입만 가능
System.out.println("Error");
}
console.log(5 && 0); // 0 (첫 falsy 값 반환)
console.log("a" || null); // "a" (첫 truthy 값 반환)
console.log(null && true); // null
⭐️ 따라서 두 언어 모두 단축평가를 지원하지만,
- Java는 boolean 값만 반환하는 반면
- Javascript는 반환값이 다양해진다.
java
boolean condition = false; if (condition && someMethod()) { // someMethod()는 평가되지 않음 }javascript
const condition = false; console.log(condition && someMethod()); // someMethod()는 호출되지 않음