1 minute read

옵셔널 체이닝 ‘?.’

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

  • 필요한 이유

    1. 객체에 가지고 있지 않는 프로퍼티 접근 시

    2. 페이지에 조냊하지 않는 요소에 접근해 요소 정보 가져오려 할 떄

    && 연산자 사용으로 에러 없이 undefined return 가능하지만 코드 길어짐

  • 옵셔널 체이닝의 등장

?. 은 ‘앞’의 평가대상이 undefined 나 null 이면 평가 멈추고 undefined 반환. 아닐 시 평가 지속

  • 옵셔널 체이닝 남용 금지

    존재하지 않아도 괜찮은 대상에만 사용.

    존재해야 하는 대상에 적용 시 에러 캐치 못 하고 디버깅 어려워짐

  • ?. 앞이 변수는 꼭 선언되어야 함

    변수 선언 하지 않았을 시 에러 발생

  • 단락 평가

    왼쪽 평가 대상에 값 없을 시 즉시 평가 멈추는 평가 방법

    오른쪽의 부가 동작들은 평가 멈췄을 시 더이상 일어나지 않음

  • ?.() 와 ?.[]

    ?. 은 연산자가 아닌 함수나 대괄호와 같이 동작하는 특별한 문법 구조체

    • ?.()

      존재 여부가 확실치 않은 함수 호출할 때 사용

    • ?.[]

      . 대신 대괄호 사용해 객체 프로퍼티에 접근할 때 사용

    • ?. delete

      delete 와 조합해 프로퍼티 제거 가능

    • ?.은 읽기나 삭제하기에는 가능하지만 쓰기에는 사용 불가능

요약

  • 옵셔널 체이닝은 프로퍼티가 없는 중첩 객체 에러 없이 안전하게 접근할 때 사용

  • 옵셔널 체이닝 남용 시 존재해야 하는 대상에 적용해서 에러 캐치 못 하고 디버깅 어려워 짐

  • ?. 앞의 변수는 반드시 선언되어야 함. 아닐 시 에러

  • 단락 평가란 왼쪽 평가 대상에 값 없을 시 즉시 평가 멈추는 평가 방법

  • ?.() 로 존재 여부 확실치 않은 함수 호출

  • ?.[] 로 .대신 프로퍼티 접근

  • ?.delete 로 프로퍼티 제거

  • ?. 는 쓰기는 불가능

Categories: ,

Updated: