옵셔널 체이닝(optional chaining) ?.을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근할 수 있습니다.
중첨 객체의 특정 프로퍼티에 접근하기 위해서 보통 AND연산자를 통해 실제 해당 객체 프로퍼티가 있는지 확인하여 사용 했었는데 AND 연산자를 사용하면 코드가 길어진다는 단점이 있어 보완하고자 등장하게 되었다.
?.
은 ?.
앞의 평가 대상이 undefined 혹은 null이면 평가를 멈추고 undifined를 반환한다.
옵셔널 체이닝을 남용하지 말라고 경고한다. 이유는 에러를 조기에 발견하지 못하고 디버깅에 어려움이 생길 수 있다고 한다.
'?.'은 변수 앞에 선언 되어 있어야 한다.
출처: 항해99 같은 팀원분의 정리
아래는 블로그 참조
const nestedProps = obj.first && object.first.name
이처럼 중첩구조를 가진 object에서 객체의 속성값을 찾기 위해선 이런식으로 참조를 확인하여야 했었다. 논리 연산자 &&를 이용하여 좌항 연산자가 truty한 경우에만 object.first.name을 불러올 수 있었다.
하지만 이를 간단히 하여서
const nestedProps = obj.first?.name;
으로 표현하여 first의 값이 존재하면 name을 반환하고 없으면 undefined를 반환한다.
이를 풀어서 해석하면
const nestedProp = ((obj.first === null || obj.first === undefined) ? undefined : obj.first.name);
이런 식이 될 수 있겠다.
출처: https://rootjang-dev.tistory.com/2 [루트장의 Dev 일기:티스토리]