옵셔널 체이닝
옵셔널 체이닝 ‘?.’
프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근 가능
-
필요한 이유
-
객체에 가지고 있지 않는 프로퍼티 접근 시
-
페이지에 조냊하지 않는 요소에 접근해 요소 정보 가져오려 할 떄
&& 연산자 사용으로 에러 없이 undefined return 가능하지만 코드 길어짐
-
-
옵셔널 체이닝의 등장
?. 은 ‘앞’의 평가대상이 undefined 나 null 이면 평가 멈추고 undefined 반환. 아닐 시 평가 지속
-
옵셔널 체이닝 남용 금지
존재하지 않아도 괜찮은 대상에만 사용.
존재해야 하는 대상에 적용 시 에러 캐치 못 하고 디버깅 어려워짐
-
?. 앞이 변수는 꼭 선언되어야 함
변수 선언 하지 않았을 시 에러 발생
-
단락 평가
왼쪽 평가 대상에 값 없을 시 즉시 평가 멈추는 평가 방법
오른쪽의 부가 동작들은 평가 멈췄을 시 더이상 일어나지 않음
-
?.() 와 ?.[]
?. 은 연산자가 아닌 함수나 대괄호와 같이 동작하는 특별한 문법 구조체
-
?.()
존재 여부가 확실치 않은 함수 호출할 때 사용
-
?.[]
. 대신 대괄호 사용해 객체 프로퍼티에 접근할 때 사용
-
?. delete
delete 와 조합해 프로퍼티 제거 가능
-
?.은 읽기나 삭제하기에는 가능하지만 쓰기에는 사용 불가능
-
요약
-
옵셔널 체이닝은 프로퍼티가 없는 중첩 객체 에러 없이 안전하게 접근할 때 사용
-
옵셔널 체이닝 남용 시 존재해야 하는 대상에 적용해서 에러 캐치 못 하고 디버깅 어려워 짐
-
?. 앞의 변수는 반드시 선언되어야 함. 아닐 시 에러
-
단락 평가란 왼쪽 평가 대상에 값 없을 시 즉시 평가 멈추는 평가 방법
-
?.() 로 존재 여부 확실치 않은 함수 호출
-
?.[] 로 .대신 프로퍼티 접근
-
?.delete 로 프로퍼티 제거
-
?. 는 쓰기는 불가능