ES11에서 도입된 옵셔널 체이닝 연산자(?.)에 대해 알아보자
정의는 다음과 같다.
좌항의 피연산자가 null 또는 undefined 일 경우 undefined 리턴하고 아닐경우 우항을 리턴한다.
사용 예시)
var elem = null;
var value = elem?.value;
console.log(value) // undefined
elem이 null이니 undefined를 리턴하였다.
만약 옵셔널 체이닝 연산자 없이 elem.value에 직접 접근하려고 하였다면
위와같은 type error를 볼 수 있다.
참고)
위 타입에러를 피하기 위해서 옵셔널 체이닝이 없을 때는 [단순 평가]를 활용하였다.
var elem = null;
var value = elem && elem.value;
console.log(value) // null
단순 평가의 문제점은 좌항이 Falsy값인 (false,0,-0,Nan,'') 이면 좌항값을 리턴해버린다는 점이다.
따라서 다음과 같은 코드에서 기대하지 않는 값을 리턴한다.
var elem = '';
var value = elem && elem.length;
console.log(value) // 기대값 : 0 but 실제 결과 : ''
이렇게 && 연산자에서 ''(빈문자열로 의도한)객체를 false로 판단하여 좌항을 바로 리턴해버리는 애로사항을 옵셔널 체이닝(?.)연산자가 해결해준다.
var elem = '';
var value = elem?.length;
console.log(value) // 기대한대로 0 리턴
'자바스크립트 Deep Dive' 카테고리의 다른 글
[Javascript] 객체 프로퍼티 접근 방법 (0) | 2023.02.09 |
---|---|
[Javascript] null 병합 연산자(??) (0) | 2023.02.09 |
[linux] 리눅스 ^M 문자 sub Directory까지 (resursive) 삭제 (0) | 2023.02.06 |
[Javascript] 중첩 for문에서 탈출하기 - 레이블(label) 이용 (0) | 2023.02.05 |
[Javascript] 삼항 조건 연산자 vs if else 문 (0) | 2023.02.05 |