?. 연산자로 사용하며 .(체이닝 연산자)와 비슷하지만 참조하는 값이 null이나 undefined이라면 에러발생하는 것 대신에 리턴 값이 undefined로 리턴된다.
객체, 배열, 함수에 사용할 수 있다.
객체
const animal = {
dog: {
name: 'minu',
},
zoo: true,
};
//옵셔널 체이닝
console.log(animal.cat?.name); //undefined
//체이닝
console.log(animal.cat.name); //error
함수
const animal = {
dog: {
name: 'minu',
park :function park(){
console.log("park");
},
},
};
console.log(animal.dog.bark?.()); //undefined
const animal = ["cat","dog"]
console.log(animal?.[3]); //undefined
객체나 배열에 접근할 때 error를 내고 프로그램을 정지시키는거 보다 undefined를 리턴 받으면서 예외처리를 해줄 수 있기 때문에 사용하는 것 같다.