본문 바로가기

JavaScript

[JavaScript] 논리적 AND 연산자 (&&)

 

# 설명

- 모든 불리언 피연산자가 true가 되었을 때 해당 피연산자의 집합은 true가 된다.

- 왼쪽에서 오른쪽으로 평가할 때 처음으로 만나는 falsy한 피연산자의 값을 즉시 반환한다.

[ falsy한 값의 예시 ]

  • false
  • null
  • NaN
  • 0
  • 빈 문자열("" or '' or ``)
  • undefined

- 모두 truthy값이라면 마지막 피연산자의 값을 반환한다.

 

const a = 3;
const b = -2;

console.log(a > 0 && b > 0); // false
// b > 0의 값이 false이므로, 값 그대로 false 반환

 

- AND 연산자는 non-Boolean 값을 보존하고, non-Boolean값 그대로 반환한다.

result = "" && "foo"; // ""이 할당됨.
result = 2 && 0; // 0이 할당됨.
result = "foo" && 4; // 4가 할당됨. "foo", 4 둘다 truthy값이므로 마지막 피연산자인 4가 반환

 

 

# 단락 평가 (Short-Circuit evaluation)

논리적 AND 표현식은 단락 연산자이다.

각 피연산자는 불리언으로 변환되므로, 어떤 변환이 false로 판별되면 AND 연산자는 즉시 멈추고, false로 판별된 피연산자의 원래의 값을 반환한다.

나머지 피연산자는 평가하지 않는다.

function A() {
  console.log("called A");
  return false;
}
function B() {
  console.log("called B");
  return true;
}

console.log(A() && B());
// A()부터 평가. 'called A'가 로그에 찍히고, false값이므로 바로 평가 중단. false값 출력
//"called A" false;

 

 

 

*참조 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Logical_AND

 

논리적 AND (&&) - JavaScript | MDN

논리적 AND (&&) (논리적 연결) 연산자는 모든 불리언 피연산자가 true가 되었을 때 해당 피연산자의 집합은true가 됩니다.

developer.mozilla.org