옵셔널 체이닝(optional chaining)은 ES11 (2020년)에 도입된 문법입니다. 객체의 속성에 접근할 때 해당 속성이 존재하는지 먼저 확인한 후에 접근하는 기능입니다. 만약 해당 속성이 존재하지 않는 경우네는 TypeError 대신에 undefined를 반환합니다. "돌다리도 두들겨보고 건너라" 전법을 시전하는 것이라고 볼 수 있습니다. 해당 객체 내에 특정 속성이 존재할지에 대해 확신을 할 수 없다면 옵셔널 체이닝을 써주는 것이 좋습니다.
const user = {
name: "Alice",
address: {
city: "Seoul",
street: "123 Main St"
}
}
console.log(user?.address?.city); // Seoul
console.log(user?.phone?.number); // undefined
console.log(user.phone.number); // TypeError
위 코드를 실행한 결과는 다음과 같습니다. 옵셔널 체이닝을 쓰지 않은 경우에는 TypeError가 발생했음을 알 수 있습니다.
이 옵셔널 체이닝을 사용하면 다음과 같이 존재 여부를 확인하는 지저분한 코드를 안 써도 됩니다. 아마 비교적 예전에 작성된 자바스크립트 프로그램들에서는 다음과 같은 코드를 많이 보셨을 것입니다.
const ApiResp = {
name: "Alice",
// address: {
// city: "Seoul",
// street: "123 Main St"
// }
}
if (ApiResp && ApiResp.address && ApiResp.address.city == "Seoul"){
console.log("서울사람입니다.");
}
대신에 아래와 같이 코드를 작성할 수 있습니다. 코드가 한결 간결해진 것을 알 수 있습니다.
const ApiResp = {
name: "Alice",
// address: {
// city: "Seoul",
// street: "123 Main St"
// }
}
if (ApiResp?.address?.city == "Seoul"){
console.log("서울사람입니다.");
}
참고자료
'Dev > javascript' 카테고리의 다른 글
[javascript] 템플릿 리터럴로 문자열 내에 변수 쉽게 대입하기 (0) | 2024.08.30 |
---|---|
[javascript] ?? 연산자 Nullish Coalescing이란 (0) | 2024.08.17 |
[javascript] 배열을 잘라서 새로운 배열 객체로 만들어주는 slice() 메서드 (1) | 2024.08.05 |
[javascript] 크롬 브라우저 디버깅 단축키 정리 (0) | 2024.08.04 |
[javascript] 배열의 요소들을 합쳐서 문자열로 만들어주는 join() 메서드 (0) | 2024.07.23 |
[javascript] 배열에 요소 추가하는 메서드, push() (0) | 2024.07.22 |
[javascript] split() 메서드로 문자열을 지정한 구분자로 분리하여 배열 만들기 (0) | 2024.07.15 |
[javascript] 정규식(RegExp)으로 문자열내 반복되는 특정 단어 시작 인덱스 배열 생성하는 방법 (0) | 2024.07.14 |