?? Operator (Nullish Coalescing Operator)

Nullish Coalescing Operator은 ??로 표시되며 logical OR (||)과 같은 논리연산자이다. 이 연산자는 기본값을 줄 때 매우 유용하다.

let score;

console.log(`Score: ${score}`);
console.log(`Score: ${score || "NOT TESTED"}`);

Score: undefined

Score: NOT TESTED

이전에는 || 연산자를 사용했지만, 이 연산자는 기본적으로 boolean 기반이므로 다음과 같은 경우 의도하지 않은 방향으로 동작할 수 있다.

let score = 0;

console.log(`Score: ${score || "NOT TESTED"}`);

Score: NOT TESTED

score 변수는 0으로 undefined가 아니지만 || 연산자는 boolean 기반이므로 변수가 boolean으로 변환되기 때문에 빈 문자열, 0과 같은 값인 경우 NOT TESTED가 뜨게 된다. 이럴 때 ?? 연산자를 사용하면 된다.

let score = 0;

console.log(`Score: ${score ?? "NOT TESTED"}`);

Score: 0

?? 연산자를 사용한 경우 score가 null 혹은 undefined일 때만 NOT TESTED가 출력되게 된다.