Javascript

널 병합 / 옵셔널 체이닝 [node.js 교과서]

muyeon 2023. 4. 9. 14:08
본 게시글은 node.js 교과서 강의를 듣고 정리한글입니다

 

- ES2020 에서 추가된 ?? (널 병합) 연산자와 ?. (옵셔널 체이닝) 연산자이다.

- 널 병합 연산자는 주로 || 연산자 대용으로 사용되며 falsy 값 ( 9, '', false, NaN, null, undefined ) 중 null 과 undefined 만 따로 구분한다

 

널 병합 연산자 ??

const a = 0;

const b = a || 3; // || 연산자는 falsy 값이면 뒤로 넘어감

console.log(b); // 3 

const c = 0;

const b = c ?? 3; // ?? 연산자는 null과 undefined 일 때만 뒤로 넘어감

console.log(b); // 0

const e = null;

const f = e ?? 3;

console.log(f); // 3

const g = undefined;

const h = g ?? 3;

console.log(h); // 3

옵셔널 체이닝 연산자 ?.

cosnt a = {};

a.b; // a 가 객체이므로 문제없음

cosnt c = null;

try{
	c.d;
}catch(err){
     console.log(err); // TypeError: Cannot read properties of null (reading ‘d’)
}

c?.d; // 문제없음

try{
	c.f();
} catch(err) {
     console.log(err); // TypeError: Cannot read properties of null (reading ‘f’)
}

c?.f(); // 문제없음

try{
	c[0];
} catch(err) {
    console.log(err); //  TypeError: Cannot read properties of null (reading ‘0’)
}

c?.[0]; // 문제없음

- 옵셔널 체이닝 연산자는 null 이나 undefined 의 속성을 조회하는 경우 에러가 발생하는 것을 막는다.

- 위 코드처럼 일반적인 속성뿐 아니라 함수 호출이나 배열 요소 접근에 대해서도 에러가 발생하는 것을 방지할 수 있다.

- c?.d 와 c?.f() , c?.[0] 의 값은 undefined 가 된다.

- 에러의 빈도를 획기적으로 낮출 수 있기에 자주 사용된다.

 

추가로 널병합과 옵셔널 체이닝은 같이 쓰면 좋다.

const c = null;

c?.[0] ?? ‘123’;