Node.js/JavaScript

[개념 정리] 단축평가(short circuit evaluation) - &&, ||

왈왈디 2023. 4. 19. 20:56
728x90

단축평가란 왼쪽부터 오른쪽으로 평가를 진행하여,

논리연산자 && || 에 따라 다른 결과를 반환한다.

 

&&는 and, || 는 or를 의미한다.

 

아래의 에러 핸들러에서 || 연산자가 사용되었다.

const globalErrorHandler = (err, req, res, next) => {
  console.error(err);

  err.statusCode = err.statusCode || 500;

  res.status(err.statusCode).json({ message: err.message });
};

단축평가는 왼쪽부터 평가되기 때문에 || 연산자의 경우 왼쪽 값이 true라면 그 값을 반환하고,

false라면 오른쪽 값을 반환한다.

 

위 코드에서 err.statusCode에 값이 있다면 truthy한 것으로 평가되어 해당 err.statusCode가 반환된다.

반면 err.statusCode가 undefined라면 falsey 하기 때문에 오른쪽 값이 500이 반환된다.

 

아래는 && 연산자를 사용한 예시이다.

const conditions = [
  subId && `WHERE sc.id = ${subId}`,
  mainId && `WHERE m.id = ${mainId}`,
  pId && `WHERE p.id = ${pId}`,
  isMain && `WHERE p.main_product = ${isMain}`,
].filter(Boolean);

마찬가지로 왼쪽부터 평가를 하지만, &&의 경우 왼쪽 값이 true라면 오른쪽 값을 반환한다.

반면 왼쪽값이 false라면 오른쪽값은 평가하지 않고 바로 false를 반환한다.

 

참고한 블로그:

https://curryyou.tistory.com/193

 

[자바스크립트] 논리연산자(&&, ||) 단축평가

# 단축평가란? ||(논리합), &&(논리곱) 연산자는 왼쪽부터 오른쪽으로 평가를 진행하는데, 중간에 평가 결과가 나오면 오른쪽 끝까지 가지 않고 평가 결과를 반환해 버린다. 이를 '단축 평가(short ci

curryyou.tistory.com

728x90