null 병합 연산자(nullish coalescing operator) ??
를 사용하면 짧은 문법으로 여러 피연산자 중 그 값이 ‘확정되어있는’ 변수를 찾을 수 있습니다.
a ?? b
의 평가 결과는 다음과 같습니다.
a
가 null
도 아니고 undefined
도 아니면 a
b
let height = 0;
alert(height || 100); // 100
alert(height ?? 100); // 0
height || 100
은 height
에 0
을 할당했지만 0
을 falsy 한 값으로 취급했기 때문에 null
이나 undefined
를 할당한 것과 동일하게 처리합니다. 따라서 height || 100
의 평가 결과는 100
입니다.
반면 height ?? 100
의 평가 결과는 height
가 정확하게 null
이나 undefined
일 경우에만 100
이 됩니다. 예시에선 height
에 0
이라는 값을 할당했기 때문에 얼럿창엔 0
이 출력됩니다.
이런 특징 때문에 높이처럼 0
이 할당될 수 있는 변수를 사용해 기능을 개발할 땐 ||
보다 ??
가 적합합니다.
null 병합 연산자 ??
를 사용하면 피연산자 중 ‘값이 할당된’ 변수를 빠르게 찾을 수 있습니다.
??
는 변수에 기본값을 할당하는 용도로 사용할 수 있습니다.
// height가 null이나 undefined인 경우, 100을 할당
height = height ?? 100;
??
의 연산자 우선순위는 대다수의 연산자보다 낮고 ?
와 =
보다는 높습니다.
괄호 없이 ??
를 ||
나 &&
와 함께 사용하는 것은 금지되어있습니다.