목차

반응형

1. 개요

2. 사용방법

3. 주의사항

 

 

 

 

 

1. 개요

개발하다 보면 아마 가장 많이 마주치는 에러가 null이거나 undefiend인 값에서 무언가를 하려고 할 때 발생하는 null exception 에러일 것이다.

그래서 어린 시절에는 if문을 듬뿍 활용하여 null인 경우 아닌 경우 나눠서 처리하고 그랬는데 이걸 엄청 편하게 하는 방법이 있다.

처음 사용할 때는 좀 뭔가 위험하지 않을까 걱정도 되는데 잘 사용하다 보면 편리하며 문제가 없었다.

이번 포스트에서 다루고자 하는 기능의 키워드는 Optional Chaining라고 부른다.

 

2. 사용방법

공식 문서에서 떠왔다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining

 

 

단순하다. ?를 문제가 생길 것 같은 구문에서 적절히 삽입해주면 된다.

myMap에 bar라는 프로퍼티가 없는 경우 일반적으로 myMap.get("bar").name을 하면 오류가 발생한다.

하지만 ?를 사용하여 myMap.get("bar")?.name를 호출하면 해당 값이 undefiend, null 인 시점에서 뒤의 구문을 진행하지 않고 종료한다.

 

 

조금 더 본격적으로 쓰면 위처럼 가능하다. 구문 사이사이에 물음표가 계속 들어가 있다.

 

 

사용법은 이 정도면 충분할 것이라고 생각한다.

 

 

3. 주의사항

node에서는 일반적으로 v14 이상부터 지원한다.

javascript의 문법이지만 node에서는 일반적으로 14버전부터 지원한다. 나도 이거 쓰려고 버전업했다.

 

많이 써도 되지만 잘 알고 쓰자.

a?.c?.b?.c?.d 이런식으로 습관성 백무빙마냥 애매해서 잘 모르겠으니 그냥 에러안나면 장땡이지 하고 막 쓰는 것은 아니라고 생각한다.

try catch를 쓸때 에러가 나는 부분 try catch 해놓고 아무런 표시를 안해놨다가 나중에 에러가 발생하는 것 조차 넘어가버리는 큰 상황이 되듯이 비어있으면 안되는 상황에서는 에러를 내 주는 것이 맞다.

에러를 회피하기보다는 의도적으로 비어있을 수 있는 값이라서 if를 쓰기 귀찮으니 ?를 사용하는 느낌이라고 해야할까...?

 

뒤 구문에 영향을 줄지 확인하자

?구문을 쓴다고 해서 만사 ok가 아니다. ? 연산자를 사용하여 당장 한줄의 라인에서는 문제없이 넘어갔지만 이번에 생기지 않는 에러로 인하여 바로 다음줄, 다다음줄, 또는 먼 뒤의 로직에서 해당 구문이 실행되지 않아서 발생하는 오류가 없는지도 파악해서 처리하자.

반응형