본문 바로가기
언어/JavaScript

Nullish 병합 연산자 '??'

by 샐리_ 2025. 1. 21.

nullish 병합 연산자

Nullish 병합 연산자(nullish coalescing operator) ??를 사용하면 짧은 문법으로 여러 피연산자 중 그 값이 확정되어 있는 변수를 찾을 수 있다.

a ?? b 는 a가 null도 아니고 undefined도 아니면 a이고 그 외의 경우는 b라는 결과가 나온다.

 

'??'와 '||'의 차이

nullish 병합 연산자는 OR 연산자 ||와 유사해 보인다.

그런데 두 연산자는 차이점이 있다.

  • ||는 첫 번째 truthy 값을 반환한다.
  • ??는 첫 번째 정의된(defined) 값을 반환한다.

null과 undefined, 숫자 0을 구분 지어 다뤄야 할 때 이 차이점은 매우 중요한 역할을 한다.

let height = 0;

console.log(height || 100);	// 100
console.log(height ?? 100); 	// 0

위 예시를 보면 height || 100은 height에 0을 할당했지만 0을 falsy 한 값으로 취급했기 때문에 null이나 undefined를 할당한 것과 동일하게 처리한다.

반면 height ?? 100은 height가 정확하게 null이나 undefined일 경우에만 100이 된다.

이런 특징 때문에 0이 할당될 수 있는 변수를 사용할 경우에는 || 보다 ??가 적합하다.

 

연산자 우선순위

??의 연산자 우선순위는 5로 꽤 낮다.

따라서 ??=?보다는 먼저, 대부분의 연산자보다는 나중에 평가된다.

그렇기 때문에 복잡한 표현식 안에서 ??를 사용해 값을 하나 선택할 때는 괄호를 추가하는 것이 좋다.

 


참조

https://ko.javascript.info/nullish-coalescing-operator#ref-769

반응형