728x90
옵셔닝 체이닝(?.)
객체의 속성이나 메서드가 존재하는지 확인 후 접근할 때 사용
만약 속성이 null 또는 undefind라면, 에러를 발생시키지 않고 undefined를 반환
=> 안전하게 객체의 속성 접근
const user = {
name: 'Alice',
address: {
city: 'New York',
},
};
// 옵셔널 체이닝 없이:
console.log(user.address.city); // 'New York'
console.log(user.address.street); // undefined (정상 작동)
console.log(user.phone.number); // TypeError: Cannot read property 'number' of undefined
// 옵셔널 체이닝 사용:
console.log(user?.address?.city); // 'New York'
console.log(user?.address?.street); // undefined
console.log(user?.phone?.number); // undefined (에러 없이 안전하게 처리)
그렇다면 언제 ?. 사용하는게 좋을까?
- 객체가 존재할지 확신이 없는 경우: 객체가 null 또는 undefined일 가능성이 있을때
- 네트워크 요청이나 외부 데이터: 서버에서 받은 데이터가 구조적으로 항상 일정하지 않거나 일부 데이터가 누락될 가능성이 있을때
그렇다면 언제 . 사용하는게 좋을까?
- 객체가 반드시 존재할 때
const obj = { name: 'Alice' };
// 반드시 name이 존재하는 경우
console.log(obj.name); // 'Alice'
// name이 존재하지 않을 수 있는 경우
console.log(obj?.name); // 'Alice' (정상)
// 무조건 옵셔널 체이닝을 사용하면 실수로 문제를 감출 수 있음
console.log(obj?.age); // undefined (의도한 것인지, 실수인지 헷갈릴 수 있음)
728x90
'🦎 JavaScript > JavaScript' 카테고리의 다른 글
[JS] 간단하게 알아보는 some, every, filter 차이! (0) | 2024.11.08 |
---|---|
[JS] 콜백 함수 뽀개기 🤭 (1) | 2024.11.07 |
[JS] filter메서드, find메서드 2가지 차이 (1) | 2024.09.18 |
[JS] map(), filter(), reduce() 차이 그리고 every()와 some()까지 (1) | 2024.09.10 |
for..of vs for..each + 콜백함수 까지 🫡 (0) | 2024.09.03 |