?.(옵셔널 체이닝)

SeokSuMIN·2020년 11월 22일
0

옵셔널 체이닝의 등장

?.은 ?.'앞’의 평가 대상이 undefined나 null이면 평가를 멈추고 undefined를 반환합니다.

let user = {}; // 주소 정보가 없는 사용자

alert( user?.address?.street ); // undefined, 에러가 발생하지 않습니다.

user && user.address && && user.address.street <-- 같은코드

특징

1. 평가 대상이 결과가 null이나 undefined가 아닌 경우엔 값이 ‘있다’, '존재한다’라고 표현.

2. ?.는 왼쪽 평가대상에 값이 없으면 즉시 평가를 멈춥니다. 참고로 이런 평가 방법을 단락 평가(short-circuit)라고 부릅니다.

3. 함수호출(), 객체접근 ., [] 에 사용가능

(함수)
let user1 = {
  admin() {
    alert("관리자 계정입니다.");
  }
}

let user2 = {};

user1.admin?.(); // 관리자 계정입니다.
user2.admin?.();
-------------------------------------
(객체)
let user1 = {
  firstName: "Violet"
};

let user2 = null; // user2는 권한이 없는 사용자라고 가정해봅시다.

let key = "firstName";

alert( user1?.[key] ); // Violet
alert( user2?.[key] ); // undefined

4. delete와 조합하여 사용가능, 없는 속성을 제거해도 에러는 발생하지 않지만 문법상 사용가능

delete user?.name
profile
자극이 필요한 개발자

0개의 댓글

관련 채용 정보