[JavaScript 심화] 단락 평가

2025. 11. 3. 13:53·React/JavaScript 심화
"단락 평가"란, 논리 연산자(`&&`, `||`)가 왼쪽 값만으로 결과가 확정되면 오른쪽은 평가하지 않는 것을 의미함

1. 기본개념

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

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

console.log(returnFalse() && returnTrue());
// 출력: 
// False 함수  
// false

설명

  • `&&`는 왼쪽이 `false`면 이미 전체가 false -> 오른쪽 실행 X
  • 그래서 `returnTrue()`는 호출되지 않음
    -> 이게 "단락 평가"의 핵심

2. 동작 비교

console.log(returnTrue() && returnFalse());
// True 함수
// False 함수
// false

여기선 `returnTrue()`가 `true`를 반환했으므로 결과를 확정하려면 오른쪽도 실행해야 해서 두 함수 모두 실행됨.


3. OR(`||`) 연산의 단락 평가

console.log(returnFalse() || returnTrue());
// False 함수
// True 함수
// true

console.log(returnTrue() || returnFalse());
// True 함수
// true

`||`는 왼쪽이 true면 이미 전체가 true -> 오른쪽은 실행되지 않음 즉,

`&&` -> 첫 번째가 false면 멈춤
`||` -> 첫 번째가 true면 멈춤

4. `truthy` / `falsy` 값과 단락 평가

  • 단락 평가는 true / false 뿐 아니라 truthy / falsy 값 전체에도 적용됨
function returnFalse1() {
  console.log("False 함수");
  return undefined; // falsy
}

function returnTrue1() {
  console.log("True 함수");
  return 10; // truthy
}

console.log(returnFalse1() && returnTrue1());
// False 함수
// undefined

console.log(returnTrue1() && returnFalse1());
// True 함수
// False 함수
// undefined

console.log(returnFalse1() || returnTrue1());
// False 함수
// True 함수
// 10

console.log(returnTrue1() || returnFalse1());
// True 함수
// 10
`undefined`, `null`, `0`, `NaN`, `""` 같은 falsy 값도 false처럼 평가됨

5. 단락 평가 활용 예시

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

printName(); // person의 값이 없음
printName({ name: "도서" }); // 도서

동작 해석

  • `person && person.name`
    -> `person`이 falsy(예: `undefined`, `null`)이면 바로 falsy로 멈춤
    -> 안전하게 접근 가능 (`person.name` 접근 에러 방지)
  • `name || "person의 값이 없음"`
    -> `name`이 falsy면 `"person의 값이 없음"`을 출력

즉,
`&&` : 왼쪽이 falsy면 멈춤 (안전한 접근)
`||` : 왼쪽이 falsy면 오른쪽 대체값 사용 (기본값 설정)

 

'React > JavaScript 심화' 카테고리의 다른 글

[JavaScript 심화] 배열 메서드 (요소 조작)  (0) 2025.11.10
[JavaScript 심화] 순회 정리  (0) 2025.11.10
[JavaScript 심화] Spread & Rest  (0) 2025.11.03
[JavaScript 심화] 구조 분해 할당  (0) 2025.11.03
[JavaScript 심화] Truthy & Falsy  (0) 2025.11.03
'React/JavaScript 심화' 카테고리의 다른 글
  • [JavaScript 심화] 순회 정리
  • [JavaScript 심화] Spread & Rest
  • [JavaScript 심화] 구조 분해 할당
  • [JavaScript 심화] Truthy & Falsy
이도서
이도서
  • 이도서
    도서의 코딩노트
    이도서
  • 전체
    오늘
    어제
    • 분류 전체보기 (249)
      • Today I Learned (79)
        • 2024 (78)
      • Swift (25)
        • Swift 문법 정리 (19)
        • RxSwift (5)
      • Swift Study (12)
        • Playground (2)
        • Storyboard (9)
        • UIKit (1)
      • Flutter (27)
        • Dart 언어 (16)
        • Flutter Study (11)
      • React (37)
        • HTML & CSS (8)
        • JavaScript 기본 (12)
        • JavaScript 심화 (14)
        • Node.js (2)
        • React (1)
      • Git (3)
      • 코딩테스트 (60)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 개발 공부 공유 링크
  • 인기 글

  • 태그

    iOS앱개발
    ios
    코딩테스트 level.1
    Til
    Swift
    ios앱개발자
    storyboard
    DART
    코딩테스트
    내일배움캠프
    html
    function
    React
    Flutter
    코딩테스트Level.1
    javascript 기본
    CLASS
    javascript
    함수
    객체지향
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이도서
[JavaScript 심화] 단락 평가
상단으로

티스토리툴바