문법
ex)
중첩된 구조를 가진 객체 obj가 있다. optional chaining이 없이 깊이 중첩된 하위 속성을 찾으려면, 다음과 같이 참조를 확인해야 한다.
let nestedProp = obj.first && obj.first.second;
optional chaining 연산자(?.)를 사용하여, obj.first.second 에 접근하기 전에 obj.first의 상태에 따라 명시적으로 테스트하거나 단락시키지 않아도 된다.
let nestedProp = obj.first?.second;
++ 비슷하게 생긴 연산자 중에 '??'라는 nullish 병합 연산자도 있다.
a가 null도 아니고 undefined도 아니면 a
그 외의 경우는 b
ex)
let firstName = null;
let lastName = null;
let nickName = "바이올렛";
// null이나 undefined가 아닌 첫 번째 피연산자
alert(firstName ?? lastName ?? nickName ?? "익명의 사용자"); // 바이올렛
'??'와 '||'의 차이
ex)
let height = 0;
alert(height || 100); // 100
alert(height ?? 100); // 0
위와 같은 특징 때문에 0이 할당될 수 있는 변수를 사용해 기능을 개발할 땐 '||'보다 '??'가 적합하다.