본문 바로가기

코딩과 데이터 분석

[javascript] 자바스크립트 단축 평가(short circuit evaluation)에 대해

단축평가(Short Circuit Evaluation)는 논리 연산자가 왼쪽에서 오른쪽으로 평가할 때, 전체 표현식의 결과가 확실해지면 나머지 부분을 평가하지 않는 프로그래밍 기법입니다. 자바스크립트에서는 && (AND)와 || (OR) 연산자가 단축평가를 수행합니다.

단축평가의 동작

  1. AND 연산자 (&&):
    • 첫 번째 피연산자가 false로 평가되면, 전체 표현식은 false가 되므로 나머지 피연산자를 평가하지 않습니다.
    • 예: A && B에서 A가 false이면 B는 평가되지 않습니다.
    console.log(false && true);  // false (true는 평가되지 않음)
    console.log(0 && "hello");   // 0 ("hello"는 평가되지 않음)
  2. OR 연산자 (||):
    • 첫 번째 피연산자가 true로 평가되면, 전체 표현식은 true가 되므로 나머지 피연산자를 평가하지 않습니다.
    • 예: A || B에서 A가 true이면 B는 평가되지 않습니다.
    console.log(true || false);  // true (false는 평가되지 않음)
    console.log("hello" || 0);   // "hello" (0은 평가되지 않음)

기억하는 방법

단축평가를 기억하기 쉽게 하는 방법은 논리 연산자의 동작 방식을 이해하는 것입니다.

  • AND (&&):
    • "그리고"라는 의미로, 둘 다 참이어야 참입니다.
    • 첫 번째가 거짓이면 전체가 거짓이므로 두 번째는 평가하지 않습니다.
    • 예시: "둘 다 참이어야지" → 첫 번째가 거짓이면 두 번째는 볼 필요 없다.
  • OR (||):
    • "또는"이라는 의미로, 하나만 참이어도 참입니다.
    • 첫 번째가 참이면 전체가 참이므로 두 번째는 평가하지 않습니다.
    • 예시: "하나만 참이면 돼" → 첫 번째가 참이면 두 번째는 볼 필요 없다.

예제

AND (&&) 예제

let x = 5;
let y = 0;

// y가 0이 아니면 x/y를 계산하고, 0이면 "Cannot divide by zero" 출력
let result = (y !== 0) && (x / y);
console.log(result);  // false (y가 0이므로 x / y는 평가되지 않음)

OR (||) 예제

let username = "";
let defaultName = "Guest";

// username이 비어 있으면 defaultName을 사용
let displayName = username || defaultName;
console.log(displayName);  // "Guest" (username이 빈 문자열이므로 defaultName 사용)

요약

  • AND (&&): 첫 번째가 false면 두 번째를 평가하지 않음.
  • OR (||): 첫 번째가 true면 두 번째를 평가하지 않음.

이렇게 단축평가를 이해하면 조건문을 더 효율적으로 작성할 수 있습니다.

반응형