옵셔널 체이닝과 null 병합 연산자

Dorogono·2022년 4월 27일
0

JS 알아보기

목록 보기
4/19
post-thumbnail

옵셔널 체이닝이란.

let elem = null;

let value = elem.value;
console.log(value);
// Uncaught ReferenceError: value is not defined

위와 같이 에러가 뜬다.

하지만, 옵셔널 체이닝 '?.'을 사용해보면

let elem = null;

let value = elem?.value;
console.log(value); // null

null이 그대로 반환된다.
-> 객체가 null 혹은 undefined라면, null과 undefined로 반환하고, 그렇지 않으면 우항을 반환한다.

옵셔널 체이닝은 객체가 null 혹은 undefined값을 확인하는 용도라고 할 수 있다.

null 병합 연산자란.

null 병합 연산자'??'로 표현한다.

let foo = null ?? 'default value';

console.log(foo); // 'default value'

null 병합 연산자옵셔널 체이닝과는 다르게 null 혹은 undefined인 객체라면, 우항을 반환한다.

하지만 이것도 문제가 있는데, 모든 Falsy 값(false, null, undefined, 0, -0, NaN, '')일 때, 우항을 반환하는 게 아니다.

let foo = '' ?? 'default value';

console.log(foo); // ''

위 예시 코드와 같이 객체가 빈 문자열 '' 이라면, 그대로 빈 문자열 ''이 반환되는 걸 알 수 있다.
다른 Falsy 값null과 undefined가 아니라면, 그 값 그대로 반환한다.

그래서 예기치 못한 상황이 나올 수 있다는 걸 명심해야 한다. 전에 업로드한 비교 연산자 글에서도 썼듯이, 예기치 못한 상황이 발생하지 않도록 방지하는 것이 좋기 때문에, 웬만하면 null 병합 연산자는 쓰지 않는 편이 좋다고 생각한다.

profile
3D를 좋아하는 FE 개발자입니다.

4개의 댓글

comment-user-thumbnail
2022년 4월 27일

옵셔널 체이닝 개념과 null 병합 연산자 개념을 알게 된거 같아 좋네요. ㅎㅎㅎ

답글 달기
comment-user-thumbnail
2022년 4월 27일

새롭게 알게된 개념이네요! 객체에 대해 파악이 필요할 때 유용하게 사용할 수 있을 것 같네요. 잘 보았습니다~ 👍

답글 달기
comment-user-thumbnail
2022년 4월 27일

오! 개발할 때 null이나 undefined를 꼭 다뤄야 하는데 이럴 때 옵셔널 체이닝을 사용하면 정말 유용하겠네요. 병합 연산자는 falsy 값에 대해 처리를 제대로 못 해주니 if문을 사용하는 게 나을까요 🤔

1개의 답글