
? 연산자와 ?? 연산자는 각각 다른 용도로 사용됩니다.
? 연산자는 옵셔널 체이닝(Option Chaining)을 사용하여, 객체의 속성을 안전하게 접근하는 데 사용됩니다. 예를 들어, 다음과 같은 객체가 있다고 가정해봅시다.
javascriptconst user = {
name: 'Alice',
address: {
street: '123 Main St',
city: 'Anywhere',
state: 'CA',
zip: '12345'
}
};
이 객체에서 user.address.street 값에 접근할 때, address 객체가 없을 수도 있습니다. 이 경우 user.address.street는 에러를 발생시키므로, 옵셔널 체이닝 연산자인 ?을 사용하여 안전하게 접근할 수 있습니다.
javascriptconst street = user?.address?.street; // '123 Main St'
const country = user?.address?.country; // undefined
위 예시에서 user.address.country는 undefined가 반환됩니다. 이는 address 객체가 존재하지만 country 속성이 없기 때문입니다.
반면, ?? 연산자는 nullish coalescing 연산자로, 왼쪽 피연산자가 null 또는 undefined일 때 오른쪽 피연산자를 반환합니다. ?? 연산자는 기본값을 설정할 때 사용됩니다. 예를 들어, 다음과 같은 코드가 있다고 가정해봅시다.
javascriptconst x = null;
const y = x ?? 42;
console.log(y); // 42
위 코드에서 x는 null이므로 y는 42로 초기화됩니다.
따라서, ? 연산자와 ?? 연산자는 각각 다른 용도로 사용되며, 효과적인 경우는 서로 다릅니다.