옵셔널 체이닝 (optional chaining)

옵셔널 체이닝 (optional chaining)

프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근이 가능한 연산자

?. 앞의 대상이 없으면 평가를 멈추고 undefined를 반환한다.

너무 너무 유용한 연산자입니다..
왜 이제야 알았지

예를 들면

김테이라는 유저의 장바구니 목록 유무를 체크해서
장바구니가 빈 객체가 아니면 어떤 동작을 수행해야하는 상황


(1) 맨 처음 작성한 코드

if ( 유저.김테이.장바구니.물건 ) {
  어쩌구저쩌구  
}

 

→ 이러면 물건이 없는 경우 대상을 찾지 못해서 에러가 생김

 


(2) 그 후 수정한 코드

if ( 유저.김테이.장바구니 && 유저.김테이.장바구니.물건) {
  어쩌구저쩌구
}

 

→ 동작은 한다. 하지만 영 찜찜하고 불편한 코드



(3) 옵셔널 체이닝 활용

if ( 유저.김테이.장바구니?.물건 ) {
  어쩌구저쩌구
}

 

→ 정상적으로 동작하며 아주 깔끔해졌다.
이제 물건이 없다면 장바구니에서 평가를 멈추고 undefined를 반환한다.