[JavaScript] 단락 평가

ttining·2025년 1월 21일

1. 단락 평가란?

📌 정의

  • 논리 연산자(&&, ||)를 사용할 때, 연산을 최적화하여 불필요한 계산을 방지하는 기법이다.

📌 설명

  • 이 기법은 두 값의 논리적 관계에 따라 평가 순서를 조절하여 성능을 높이는 데 유용하다.

📌 예시

  • true && func()에서 func()는 평가되지 않는다.


2. 논리 연산자와 단락 평가

📌 AND 연산자(&&)와 단락 평가

  • 왼쪽 피연산자가 false일 경우, 오른쪽은 평가하지 않고 바로 반환

  • 예시: false && func()에서 func()은 실행되지 않는다.

    let varA = false;
     let varB = true;
    
     console.log(varA && varB); // false

📌 OR 연산자(||)와 단락 평가

  • 왼쪽 피연산자가 true일 경우, 오른쪽은 평가하지 않고 바로 반환

  • 예시: true || func()에서 func()은 실행되지 않는다.

    let varA = false;
     let varB = true;
    
     console.log(varA || varB); // true


3. 단락 평가의 실용적 활용

1️⃣ 조건문에서의 사용

  • 간단한 조건문 처리: if (x || y) {}와 같이 사용

2️⃣ 함수 호출 최적화

  • 불필요한 함수 호출 방지: x && y()와 같은 형태로 조건부 함수 호출

3️⃣ 기본값 설정

  • undefinednull을 처리할 때: const name = userName || "Guest";


4. 단락 평가의 유의점

1️⃣ 부작용을 일으킬 수 있다.

  • 예시: true && func()과 같은 코드에서 func()가 실행되지만, 예상치 못한 부작용을 일으킬 수 있다.

2️⃣ 기타 연산자와의 혼합 사용

  • &&||의 결합 시, 단락 평가의 순서가 예상과 다를 수 있다.
  • 이를 피하려면 괄호를 적절히 사용해야 한다.


5. 성능과 최적화

1️⃣ 불필요한 연산 줄이기

  • 단락 평가로 불필요한 연산을 생략하여 성능을 개선할 수 있다.

2️⃣ 자바스크립트 엔진의 최적화

  • 자바스크립트 엔진에서 단락 평가를 활용하여 코드 실행 속도를 높일 수 있다.


6. 예시 코드

📌 AND(&&)와 OR(||)

function returnFalse() {
  console.log("False 함수");
  return false;
}

function returnTrue() {
  console.log("True 함수");
  return true;
}

console.log(returnFalse() && returnTrue());
// ✅ 결과
// False 함수 실행
// false

console.log(returnTrue() && returnFalse());
// ✅ 결과
// True 함수 실행
// False 함수 실행
// false

console.log(returnFalse() || returnTrue());
// ✅ 결과
// False 함수 실행
// True 함수 실행
// true

console.log(returnTrue() || returnFalse());
// ✅ 결과
// True 함수 실행
// true

📌 Falsy & Truthy 값 활용

  • 논리 연산식에 Falsy 또는 Truthy 값이 포함되었을 경우, 연산의 결과는 그 값 자체가 된다.
function returnFalse() {
  console.log("False 함수");
  return undefined;
}

function returnTrue() {
  console.log("True 함수");
  return 10;
}

console.log(returnTrue() || returnFalse());
// ✅ 결과
// True 함수 실행
// 10

console.log(returnFalse() || returnTrue());
// ✅ 결과
// False 함수 실행
// True 함수 실행
// true


7. 단락 평가의 한계와 대체 방법

1️⃣ 단락 평가의 한계

  • 부작용이 있는 코드에서는 예상치 못한 결과를 초래할 수 있다.

2️⃣ 대체 방법

  • 명시적인 조건문을 사용하여 부작용을 피할 수 있다.


8. 단락 평가 활용 사례

📌 예시 코드

  • 아래의 조건문을 단락 평가를 활용해 개선해보자.
// 조건문 사용
function printName(person) {
  if (!person) {
    console.log("person에 값이 없음");
    return;
  }
  console.log(person.name);
}

printName(); // person에 값이 없음

✅ 개선 I

function printName(person) {
  console.log(person && person.name);
}

printName(); // undefined

✅ 개선 II

function printName(person) {
  const name = person && person.name;
  console.log(name || "person에 값이 없음");
}

printName(); // person에 값이 없음
printName({ name: "ttining" }); // ttining


9. 단락 평가의 동작 방식 정리

console.log("Hello" || "World"); // Hello
console.log("Hello" && "World"); // World
  • T || T (첫 번째 truthy한 값)
  • T && T (두 번째 truthy한 값)

📌 A || B: 첫 번째 Truthy 값(A) 반환

  • A가 Truthy면 A 반환
  • A가 Falsy면 B 평가 및 반환

📌 A && B: 두 번째 Truthy 값(B) 반환

  • A가 Falsy면 A 반환
  • A가 Truthy면 B 평가 및 반환
profile
내가 보려고 만든 벨로그 *'-'*

0개의 댓글