?.
?.
앞에 평가 대상이 undefined
나 null
이면 평가를 멈추고 undefind 를 반환한다.obj?.prop
– obj가 존재하면 obj.prop을 반환하고, 그렇지 않으면 undefined를 반환함
obj?.[prop]
– obj가 존재하면 obj[prop]을 반환하고, 그렇지 않으면 undefined를 반환함
obj?.method()
– obj가 존재하면 obj.method()를 호출하고, 그렇지 않으면 undefined를 반환함
let user = {};
console.log(user?.address?.street) // undefined
let user = null;
console.log( user?.address ); // undefined
console.log( user?.address.street ); // undefined
⚠ 남용하지 말 것!
존재하지 않아도 괜찮은 대상에만 사용해야한다.
let user = null;
let x = 0;
user?.sayHi(x++); // 아무 일도 일어나지 않습니다.
alert(x); // 0, x는 증가하지 않습니다.