728x90
Optional Chaining은 ES2020에서 등장한 '?.' 연산자는 체인으로 이루어진 각 참조가 유효한지 명시적으로 검증하지 않고 연결된 객체 체인 내에 깊숙이 위치한 속성 값을 읽을 수 있다.
Node.js의 경우 버전 14부터 지원한다.
참조가 null 혹은 undefined여도 에러를 출력하지 않고 undefined 값을 리턴한다.
함수 호출시에도 마찬가지로 값이 없다면 undefined를 리턴한다.
옵셔널 체이닝 앞의 변수는 꼭 선언되있어야 한다.
const obj = {
name: 'Alice',
cat: {
name: 'Dinah'
}
};
const dogName = obj.dog?.name;
console.log(dogName); // output: undefined
console.log(obj.someNonExistentMethod?.()); // output: undefined
let arr = [1, 2, 3, 4, 5]
console.log(arr?.[4]);
console.log(arr?.[5]); // undefined
arr[5] = 6;
console.log(arr?.[5]);
// optional chaining은 값을 읽고 삭제할때에는 사용할 수 있지만
// 값을 할당할 때는 사용할 수 없다.
let user = {
age: 35
}
//user?.name = '홍길동'; // undefined = '홍길동'
// undefined가 반환되었을 때 null 병합 연산자(??)를 사용해 기본 값을 할당할 수 있다.
user.name = user?.name ?? '홍길동';
console.log(user.name, user.age);
|
optional chaining 이 브라우저에 따라 동작이 안될 수 있으니 반드시 확인해야 한다.
728x90
'React > morden javascript' 카테고리의 다른 글
Javascript 클로저(Closure) (0) | 2023.10.06 |
---|---|
자바스크립트 일급객체(first class citizen) (0) | 2022.12.28 |
[ES6] 비구조화 할당(destructuring assignment) (0) | 2022.12.28 |
Javascript Array.filter 사용 예제 (0) | 2022.12.27 |
Javascript Array.map 사용 예제 (2) | 2022.12.27 |