next.js authentication 예제를 살펴보면 다음과같은 코드가 있다
{state?.errors?.email && <p>{state.errors.email}</p>}
state?.errors?.email 를 보면 각 참조(.) 중간에 ? 가 있는데 이것은 접근하려는 오브젝트나 호출하려는 함수의 참조 오류가 있을 때 오류를 발생시키지 않고 undefined 를 반환 하게하는 연산자이고 이를 옵셔널 체이닝 이라고 부른다.
if문으로 nullish 검증을 하는 코드를 줄여줄 수 있는 연산자라 편하긴 한데 오류를 내지 않고 undefined 를 반환하게되어 디버깅에 혼란을 줄것같다. UI 코드나 중요하지 않은 부분에 사용하면 좋을 것 같다.