javascript - ?? 연산자 (a.k.a 널병합 연산자)
JS에서 ?? 연산자는 “널 병합 연산자(Nullish Coalescing Operator)”라고 불립니다. 이 연산자는 ES2020에서 도입되었습니다.
?? 연산자의 기능:
- 왼쪽 피연산자가
null또는undefined일 때만 오른쪽 피연산자를 반환합니다. - 그 외의 경우(falsy 값 포함)에는 왼쪽 피연산자를 반환합니다.
|| 연산자와의 비교:
- 기능:
||: 왼쪽 피연산자가 falsy(false,0,'',null,undefined,NaN)일 때 오른쪽 피연산자를 반환합니다.??: 왼쪽 피연산자가null또는undefined일 때만 오른쪽 피연산자를 반환합니다.
- 사용 예:
console.log(0 ?? 42); // 0 console.log(0 || 42); // 42 console.log('' ?? 42); // '' console.log('' || 42); // 42 console.log(null ?? 42); // 42 console.log(null || 42); // 42
장단점:
?? 연산자의 장점:
0이나 빈 문자열('')과 같은 유효한 falsy 값을 그대로 사용하고 싶을 때 유용합니다.- 의도를 더 명확하게 표현할 수 있습니다. “이 값이 없으면(null 또는 undefined) 이 기본값을 사용하라”는 의미를 정확히 전달합니다.
?? 연산자의 단점:
- 비교적 최근에 도입된 기능이라 오래된 브라우저에서는 지원되지 않을 수 있습니다.
|| 연산자의 장점:
- 폭넓게 지원되어 호환성이 좋습니다.
- falsy 값을 모두 처리하고 싶을 때 유용합니다.
|| 연산자의 단점:
0이나''와 같은 falsy 값도 기본값으로 대체되어 버립니다. 이는 때때로 의도치 않은 결과를 초래할 수 있습니다.
결론적으로, 정확히 null이나 undefined만을 처리하고 싶다면 ??를, 모든 falsy 값을 처리하고 싶다면 ||를 사용하는 것이 적절합니다. 상황에 따라 적절한 연산자를 선택하는 것이 중요합니다.