옵셔널 체이닝은 페이지에 존재하지 않는 요소에 접근해 요소의 정보를 가져올때 발생하는 문제를 해결한다.
let user = {}; alert(user.address.street); // TypeError: Cannot read property 'street' of undefined
?.
은 ?.
앞의 평가 대상이 undefined
나 null
이면 평가를 멈추고 undefined
를 반환한다.
let user = null; alert( user?.address ); // undefined alert( user?.address.street ); // undefined
?.
는 왼쪽 평가대상에 값이 없으면 그 즉시 평가를 멈춘다. 그렇게 때문에 오른쪽에 있는 부가 동작은 더이상 일어나지 않게된다.
let user = null; let x = 0; user?.sayHi(x++); // 아무 일도 안일어난다. alert(x); // 0, x는 증가하지 않는다.