자바스크립트 코드에서 "??" 를 보신 적이 있나요?
??
는 nullish 병합 연산자라고 불립니다.
해당 연산자를 사용하면 짧은 문법으로 여러 변수 중 확정되어있는 변수를 찾을 수 있습니다.
let result = a ?? b
a
가 null
도 아니고 undefined
도 아니면 result의
값은 a
b
nullish 병합 연산자 ??없이 동일한 동작을 하는 코드를 작성하면 다음과 같습니다.
let result = (a !== null && a !== undefined) ? a : b;
비교 연산자와 논리 연산자만으로 코드를 작성하면 매우 길어집니다.
let firstName = null;
let lastName = null;
let nickName = "moomooj";
alert(firstName ?? lastName ?? nickName ?? true ); // moomooj
nullish 병합 연산자는 OR 연산자와 상당히 유사하지만 중요한 차이점이 있습니다.
예시를 보며 알아봅시다.
let height = 0;
alert(height || 100); // 100
alert(height ?? 100); // 0
해석:
OR 연산자에서 height는 false라서 100 반환.
Nullish 연산자에서 height는 null 또는 undefined가 아니기 때문에 0을 반환.
❗️ 주의사항
안정성 관련 이슈 때문에 ??는 &&나 ||와 함께 사용하지 못합니다.let x = 1 && 2 ?? 3; // SyntaxError: Unexpected token '??'