객체에 접근할 때 프로퍼티가 없어도 에러 없이 접근할 수 있는 양날의 검(?) 같은 문법이다.
let person = {};
console.log(person.name.firstName); //TypeError: Cannot read properties of undefined (reading 'firstName')
이렇게 객체에 존재하지 않는 프로퍼티에 접근 하려면 에러가 발생한다.
그래서 개발을 할 때 보통 &&를 사용해서 존재하지 않는 프로퍼티에 접근할 때 사용하곤 했다.
let person = {};
console.log(person && person.name && person.name.firstName); //undefined
물론 이런 방법도 있지만 객체의 단계가 깊어지면 깊어질수록 코드의 길이가 엄청나게 길어져버린다.
이럴 때 사용하는 것이 옵셔널 체이닝이다.
let person = {}
console.log(person && person.name && person.name.firstName); //undefined
console.log(person?.name?.firstName); //undefined
이렇게 옵셔널 체이닝을 사용하게 되면 코드의 가독성이 좋아진다.
옵셔널 체이닝이란
1. 앞에 평가대상이 null이나 undefined 이어야 한다.
2. 예시에서 사용한 객체 person이 존재하는 거처럼 꼭 선언되어 있는 변수에 사용해야 한다.
3. 옵셔널 체이닝 앞에 값이 없으면 그 뒤로 실행되지 않는다.
옵셔널 체이닝이 undefined나 null이라도 에러를 발생시키지 않아서 디버깅할 때 힘들 수 있으니... 꼭 필요한 곳에서 써야 한다. 그래서 양날의 검이라는 생각이 들었다.
'JavaScript' 카테고리의 다른 글
[JavaScript] 배열을 객체로 변환하는 방법 (0) | 2022.02.22 |
---|---|
[Lookup Table] 룩업 테이블 (JS Patterns) (0) | 2022.01.27 |
export와 export default의 차이점 (0) | 2022.01.18 |
localStorage와 sessionStorage 차이점 (간단한 비교) (0) | 2021.12.15 |
formData console.log로 확인하는 방법 (0) | 2021.10.27 |