JavaScript / Nullish coalescing operator (??)

2024. 10. 21. 03:41·JavaScript/이론 & 문법

Nullish coalescing operator (??)

Nullish coalescing operator (??)는 JavaScript에서 도입된 연산자로,

변수가 null 또는 undefined일 경우에만 오른쪽 피연산자의 값을 반환하는 연산자입니다 !

즉 변수가 nullish 한 상태일 때만 다른 대체 값을 제공하고, 그렇지 않으면 원래 값을 유지하는데 사용됩니다.

 

기본 문법을 살펴볼까요?

// a : 평가할 값
// b : a가 null또는 undefined일 때 반활할 대체 값

let result = a ?? b;

 

a가 null또는 undefined일 경우 b를 반환합니다.

그렇지 않으면 a의 값을 유지합니다.

 

이 연산자는 논리 연산자 || 와 비슷하게 작동하지만 차이점이 있는데요 !

??는 nullish 값(null, undefined)에만 반응하기때문에,

flasy 값인 0, "", false에는 유효한 값으로 취급합니다.

 

let foo = null;
let bar = foo ?? 'default';
console.log(bar); // 'default', foo가 null이므로 'default'가 할당됨

let baz = 0;
let qux = baz ?? 42;
console.log(qux); // 0, baz는 0이지만 null이나 undefined가 아니므로 0을 유지

 

위 예시를 보면

foo 는 null이므로 bar는'default'값을 받습니다.

하지만 baz는 0 이므로 nullish하지 않기 때문에 qux는 0으로 유지됩니다.

 

??와 ||의 차이점

|| 연산자도 비슷하게 동작하지만, 모든 falsy값(0, "", false)에 반응하여 오른쪽값을 반환합니다.

반면에, ??는 오직 null과 undefined에만 반응합니다 !

 

|| 예시

let a = 0;
let result = a || 5;
console.log(result); // 5, a가 falsy 값(0)이므로 5가 할당됨

 

?? 예시

let a = 0;
let result = a ?? 5;
console.log(result); // 0, a는 nullish하지 않으므로 그대로 0을 반환

 

?? 사용 시 주의 사항

?? 연산자는 우선순위가 매우매우 낮습니다. 따라서 && 또는 || 같은 다른 논리 연산자와 함께 사용할 때는 괄호를 사용하여 의도를 명확히 해야합니다.

 

예시코드를 살펴보면

let a = null;
let b = false;
let result = a ?? b && 'foo'; // ??보다 &&가 먼저 평가됨
console.log(result); // 'foo', b && 'foo'가 먼저 평가되어 'foo'가 반환

 

이렇게 될 경우 b && 'foo'가 먼저 실행되므로 ?? 연산자의 오른쪽 피연산자로 'foo'가 들어갑니다.

우선순위를 명확하게 하려면 괄호를 사용해야 합니다!

 

let result = (a ?? b) && 'foo';
console.log(result); // false, a ?? b가 false가 되므로 최종 결과도 false

실행 결과 - 우선 순위


정리

  • ?? 는 null과 undefined만 체크하는 연산자로, 값이 없는 경우 대체 값을 제공하는데 유용합니다.
  • Falsy 값(0, "", false)을 유지하면서 대체 값을 제공할 때 사용합니다.
  • ||와 달리 nullish 값만 처리한다는 점에서 더 세밀하게 동작합니다.

'JavaScript > 이론 & 문법' 카테고리의 다른 글

JavaScript / Nullish coalescing assignment (??=)  (0) 2024.10.21
JavaScript 옵셔널 체이닝 / Optional chaining  (0) 2024.10.21
JavaScript 전개 구문과 구조 분해 할당  (0) 2024.10.21
JavaScript / in 연산자의 사용  (0) 2024.10.20
JavaScript for..in 과 for..of (iteration 문법)  (0) 2024.10.20
'JavaScript/이론 & 문법' 카테고리의 다른 글
  • JavaScript / Nullish coalescing assignment (??=)
  • JavaScript 옵셔널 체이닝 / Optional chaining
  • JavaScript 전개 구문과 구조 분해 할당
  • JavaScript / in 연산자의 사용
lucainr
lucainr
프로그래밍 기술 및 관심사 공유, 개발자의 성장 목적으로 블로그를 운영하고 있습니다.
  • lucainr
    Luca의 개발 Blog
    lucainr

  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공통
        • Network
        • Security
      • Github
        • 환경설정
        • 이해하기
      • Java
        • Spring Boot
        • 이론 & 문법
        • MyBatis
        • 알고리즘 & 자료구조
        • 에러 노트(Error Note)
        • 웹 어플리케이션(Web Application)
      • DB
        • Oracle DB
        • MySQL & MariaDB
      • JavaScript
        • 이해하기
        • 이론 & 문법
      • HTML & CSS
      • Python
        • 이론 & 문법
        • 에러 노트(Error Note)
      • AWS
      • Linux
      • Docker
      • Side Project
      • 개발 Tip?
        • MacBook(Mac OS)
        • IntelliJ
      • 취미 생활
        • 독서
        • 인사말
        • 나의 생각
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 공지사항

  • 인기 글

  • 최근 글

  • 태그

    optionalchaining
    구조분해할당
    for
    ??
    Web
    인사말
    javascript
    Python
    Array
    null
    전개구문
    undefined
    파이썬
    자바스크립트
    IN연산자
    배열
    옵셔널체이닝
  • hELLO· Designed By정상우.v4.10.0
lucainr
JavaScript / Nullish coalescing operator (??)
상단으로

티스토리툴바