nullish coalescing operator(??
)는 ECMAScript 2020에 업데이트 된 것으로 기존의 or operator(||
)에 null
과 false
를 구분해서 처리하는 기능이 포함된 operator이다.
or operator 는 첫번째 truthy한 value를 반환하고, 모든값이 falsey하다면 마지막 operand(피연산자)를 반환한다.
예를 들어,
let a = false || true;
console.log(a); //true를 반환
let b = false || null;
console.log(b); //null을 반환
let c = null || false;
console.log(c); //false를 반환
위와 같은 결과를 얻을 수 있다.
만약에 위와 같은 상황에서 nullish coalescing operator를 사용한다면
let a = false ?? true;
console.log(a); //false를 반환
let b = false ?? null;
console.log(b); //false를 반환
let c = null ?? false;
console.log(c); //false를 반환
let d = null ?? true;
console.log(d); //true를 반환
위와 같은 결과를 얻을 수 있다.
이유는 nullish coalescing operator는 첫번째 nullish 하지 않은 value를 반환하기 때문이다. 그리고 마찬가지로 모든값이 nullish하다면 마지막 operand(피연산자)를 반환한다.
다음은 falsey 한 값들을 정리한 표이다.
value | description |
---|---|
false | 키워드 false |
0 | 숫자 zero |
-0 | 음수 zero |
0n | BigInt. 불리언으로 사용될 경우, 숫자와 같은 규칙을 따름. |
"" | 빈 string |
null | null - 아무런 값도 없음 |
undefined | undefined - 원시값 |
NaN | NaN - 숫자가 아님 |
이 중에서 null
과 undefined
만 nullish한 값이다.
위 표를 참고해서 or operator(||
)와 nullish coalescing operator(??
)의 결과를 추측할 수 있다.