Optional chaining (?)은 영어 표현식 그대로 옵션으로 표기하는 연산자인데, 이는 있을 수도 있고 없을 수도 있는 값을 undefined 으로 return을 해주는 것이다. 보통 그 값이 없을 경우 error 로 리턴이 되는데, error 가 아닌 undefined 으로 리턴해주어서 error가 아니게 해준다.
위의 예시를 보면 dog의 값이 adventurer 변수(데이터) 안에는 없기 때문에 undefined 가 출력된다. 그럼 언제, 왜. 이 연산자를 쓸까? adventurer 값이 예시에서는 변수로 쓰였으나 실제로 어떤 json 데이터 값이 있다고 하자. 그 json 데이터 값이 배열로 이루어졌거나 여러가지 이유로 값이 있을 수도 있고 없을 수도 있다. 그런데 만약 그냥 쓰게 되면 화면상에서는 데이터 값이 없을 경우에는 error로 표시가 되지 않는데, 위의 optional chaing 을 쓰게 되면 에러로 표시되지 않고 화면에 그냥 표시된다.
이처럼 어떤 데이터 값이 있을 수도 있고 없을 수도 있는데, 에러로 화면에 표시되지 않기 위해서 하기 위해서 위의 연산자를 쓰면 매우 유용하다.