Programming/Javascript

[Javascript] optional chainning ?.

Bam_t 2021. 11. 24. 16:14
728x90

1. optional channing

옵셔널 체이닝은 프로토타입 체인으로 묶인 객체들의 프로퍼티에 안전하게 접근할 수 있게 됩니다. 안전하게 접근한다는 말은 접근하려던 프로퍼티가 존재하지 않는다면 기존에는 그냥 오류를 뱉어버렸지만, 옵셔널 체이닝을 이용하면 존재하지 않아도 오류를 뱉지 않고 스크립트를 계속 실행하게 됩니다.

다음과 같은 코드에서는 당연하게도 결과로 TypeError를 뱉어냅니다. obj 객체 아래 name.address가 존재하지 않기 때문이죠.

const obj = {};

console.log(obj.name.address);

이렇게 에러를 뱉는 순간 스크립트를 정지하게 됩니다. 하지만 실제 상황에서는 이런경우에도 에러는 따로 처리하고 스크립트 읽기를 계속해야합니다. 사용자가 사용하다 멈춰버리면 불만족스러움과 동시에 당황하기 때문이죠. 그래서 이런 예외상황을 유연하게 처리하고자 옵셔널 체이닝을 이용합니다.

옵셔널 체이닝문법은 간단합니다. 접근하는 프로퍼티에 대해서 ?.만 붙여주면 됩니다.

const obj = {};

console.log(obj?.name?.address);

이렇게 프로퍼티를 검사할 때 '?.'의 요소가 null 또는 undefined라면 이후의 검사를 멈추고 undefind를 반환합니다. 우리는 이것을 이용해서 undefind를 가지고 예외처리를 쉽게 할 수 있게 됩니다.


참조

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Optional_chaining

 

Optional chaining - JavaScript | MDN

optional chaining 연산자 (?.) 는 체인의 각 참조가 유효한지 명시적으로 검증하지 않고, 연결된 객체 체인 내에 깊숙이 위치한 속성 값을 읽을 수 있다.

developer.mozilla.org

 

728x90