?
연산자와 ??
연산자는 각각 다른 용도로 사용됩니다.
?
연산자는 옵셔널 체이닝(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
로 초기화됩니다.
따라서, ?
연산자와 ??
연산자는 각각 다른 용도로 사용되며, 효과적인 경우는 서로 다릅니다.