null 병합 연산자 "??"
- 여러 피연산자 중 그 값이 '확정되어있는' 변수를 찾을 때 사용
a ?? b
의 평가 결과
a
가 null
도 아니고 undefined
도 아니면 a
- 그 외의 경우에는
b
x = a ?? b;
= (a !== null && a !== undefined) ? a : b;
- 예시:
firstName
, lastName
, nickName
이란 변수에 사용자 이름이나 별명을 저장하는데, 사용자가 아무것도 아무런 정보도 입력하지 않는 케이스엔 "Anonymous"를 출력.
let firstName = null;
let lastName = null;
let nickName = null;
console.log(firstName ?? lastName ?? nickName ?? "Anonymous");
- 연산자 우선순위 및 안정성 관련 이슈로 사용시 괄호"()"를 추가하여 사용
- 괄호"()"
??
를 ||
나 &&
와 함께 사용하는 것은 금지
let x = 1 && 2 ?? 3;
let x = (1 && 2) ?? 3;
console.log(x);
"||"와 "??"의 차이
||
는 첫 번째 truthy 값을 반환
??
는 첫 번째 정의된(defined) 값을 반환
- 예시:
null
과 undefined
, 숫자 0
을 구분 지어 다뤄야 할 때 차이점 발생
let height = 0;
console.log(height || 100);
console.log(height ?? 100);
- 높이처럼
0
이 할당될 수 있는 변수를 사용해 기능을 개발할 땐 ||
보다 ??
이 적합