이때 존재하지 않는 중첩 객체의 속성에 접근하면 에러가 발생합니다. zerocho.girlfriend는 존재하지 않는 속성이라 undefined인데 .name으로 접근하려고 해서 발생하는 에러입니다.
zerocho.girlfriend.name;
Uncaught TypeError: Cannot read properties of undefined (reading 'name')
객체에 어떤 속성이 있는지 잘 모를 때는 ?. 연산자를 사용하면 됩니다. 옵셔널 체이닝 연산자(optional chaining operator)라고 하는데, 존재하지 않는 속성에 접근할 때 에러가 발생하는 것을 막아 줍니다.
zerocho.girlfriend?.name;
< undefined
zerocho.name?.first;
< '현영'
zerocho.girlfriend는 undefined이므로 그 안의 name 속성에 접근하는 것을 막고 undefined를 결과로 보냅니다. zerocho.name은 존재하는 속성이므로 first 속성에 정상적으로 접근합니다.