nullish 병합 연산자(nullish coalescing operator) ??
를 사용하면 짧은 문법으로 여러 피연산자 중 그 값이 ‘확정되어있는’ 변수를 찾을 수 있습니다.
a ?? b
의 평가 결과는 다음과 같습니다.
a
가 null
도 아니고 undefined
도 아니면 a
b
nullish 병합 연산자 ??
없이 x = a ?? b
와 동일한 동작을 하는 코드를 작성하면 다음과 같습니다.
x = (a !== null && a !== undefined) ? a : b;
비교 연산자와 논리 연산자만으로 nullish 병합 연산자와 같은 기능을 하는 코드를 작성하니 코드 길이가 길어지네요.
또 다른 예시를 살펴봅시다. firstName
, lastName
, nickName
이란 변수에 사용자 이름이나 별명을 저장하는데, 사용자가 아무런 정보도 입력하지 않는 케이스도 허용한다고 해보겠습니다.
화면엔 세 변수 중 실제 값이 있는 변수의 값을 출력하는데, 세 변수 모두 값이 없다면 '익명의 사용자’가 출력되도록 해보죠.
이럴 때 nullish 병합 연산자 ??
를 사용하면 값이 정해진 변수를 간편하게 찾아낼 수 있습니다.
let firstName = null;
let lastName = null;
let nickName = "바이올렛";
// null이나 undefined가 아닌 첫 번째 피연산자
*alert(firstName ?? lastName ?? nickName ?? "익명의 사용자"); // 바이올렛*
nullish 병합 연산자는 OR 연산자 ||
와 상당히 유사해 보입니다. 실제로 위 예시에서 ??
를 ||
로 바꿔도 그 결과는 동일하기까지 하죠. 관련 내용은 이전 챕터에서 살펴본 바 있습니다.
그런데 두 연산자 사이에는 중요한 차이점이 있습니다.
||
는 첫 번째 truthy 값을 반환합니다.