Java와 JavaScript 논리연산자 (&&, ||) 차이 비교

신혜린·2025년 2월 5일

참고자료

💡 typescript 구문 내 타입 검사를 하던 도중, && 를 이용한 논리연산식 결과가 boolean일 수도 있고, undefined일 수도 있다는 것을 보고 어째서 논리연산 결과값이 undefined일 수도 있는가? 에 대해 알아보다가 새롭게 알게 된 Javascript 논리연산 특징에 대해 정리하는 글

논리연산자

컴퓨터는 논리 연산 이라는 과정을 통해 true인지 false인지 상황을 판단하고 명령을 수행한다.
이러한 논리 연산에서 사용되는 것이 논리 연산자이다.
ex) 논리곱 AND(&&), 논리합 OR(||), 논리부정 NOT(!)

Java와 JavaScript의 논리연산자 차이 비교

공통점

1. 논리곱 AND(&&)

  • 두 피연산자가 모두 true일 때만 true를 반환한다
  • 왼쪽 피연산자가 false라면 오른쪽 피연산자는 평가하지 않는다. (단축평가)

2. 논리합 OR(||)

  • 두 피연산자 중 하나라도 true라면 true를 반환한다.
  • 왼쪽 피연산자가 true라면 오른쪽 피연산자는 평가하지 않는다. (단축평가)

차이점

1. 피연산자의 타입

Java

  • 논리 연산자는 반드시 boolean 타입에 대해 동작한다.
  • 만약 피연산자가 boolean이 아니라면 컴파일 오류가 발생한다.
int a = 5;
if (a && true) { // 컴파일 오류: 논리 연산자는 boolean 타입만 가능
    System.out.println("Error");
}

Javascript

  • 불리언이 아닌 값도 평가한다. (falsy, truthy)
  • &&는 첫 번째 피연산자가 falsy하면 해당 falsy 값을 반환한다.
  • &&는 모든 값이 truthy면 마지막 피연산자 truthy 값을 반환한다.
  • ||는 첫 번째 피연산자가 truthy하면 해당 truthy 값을 반환한다.
  • ||는 모든 값이 falsy하면 마지막 피연산자 falsy 값을 반환한다.
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()는 호출되지 않음

2. 비트 연산 여부

Java

  • &와 |를 비트 연산자로도 사용하며, 이는 &&와 ||와는 다르다.
  • 비트 연산자는 논리 연산과 다르게 단축 평가를 수행하지 않는다.
  • 따라서 &와 |는 양쪽 피연산자 모두를 평가한다.

Javascript

  • &와 |를 논리 연산이 아닌 비트 연산에만 사용한다.
profile
개 발자국 🐾

0개의 댓글