null 병합 연산자 ‘??’
’??’
짧은 문법으로 여러 피연산자 중 그 값이 확정된 변수 찾기 가능
-
a ?? b 의 평가 결과** a 가 null, undefined 아니면 a 그 외의 경우 b
-
’??’ 없이 할 경우
x = (a !==null && a !==undefined) ? a: b;
’??’ 와 ‘||’ 의 차이
유사해 보이지만 실제로 다름
-
’ ’ 는 첫번째 truthy 한 값 반환 - ’??’ 는 첫번째 정의된(null,undefined가 아닌) 값 반환
숫자 0 을 다룰 때 중요한 역할.
let height = 0
alert(height || 100); // 100
alert(height ?? 100); // 0
0이 할당될 수 있는 변수 사용할 땐 ‘ | ‘보다 ’??’이 적합 |
연산자 우선순위
5로 낮음 복잡한 표현식 안에선 괄호 추가 지향
안정성 이유
JS 언어 규정에서 제약 ‘??’ 은 ‘&&’ 나 ‘||’ 과 함께 사용하지 불가 ‘||’ 을 ‘??’ 으로 바꾸기 시작하며 만드는 실수 방지하기위해 명세서에 제약 추가됨 제약 피할 시 괄호 사용
요약
-
’??’ 은 짧은 문법으로 확정된 변수 찾을 때 유용
-
’ ’ 과 유사해 보이지만 null, undefined 를 다루는데 있어서 다르다 특히 0 다룰 때 주의. -
연산자 우선순위에서 매우 낮으므로 괄호와 함께 사용 지향
-
JS 언어 규정에서 다른 논리 연산자와 함께 쓰는 건 제약됨
- 제약 피할 시 괄호 사용
출처 : https://ko.javascript.info/nullish-coalescing-operator