Node.js v14 새로운 기능
Node.js v14 에서는 어떤게 바뀌었나
  • JavaScript

Node.js v14.0이 릴리즈 되었습니다. 2020년 10월말까지는 Active LTS 상태에서 사용할 수 있습니다.
Node.js v14.0은 최신 JS를 지원하는 V8.81을 사용하도록 업데이트 되었습니다.

과연 Node.js v14에서는 어떤게 새로워졌는지 알아보겠습니다.

Optional Chaining

개발자는 다음과 같은 코드에 접근할 때 속성이 null인지 정의되어있지 않은지 확인할 필요가 있었습니다.

if (user && user.info) {
  const name = user.info.name;
}

이러한 코드는 오류가 발생하기 쉽습니다.
아마도 Cannot read property ‘xxx’ of undefined. 와 같은 오류를 볼 수 있을거에요.

v8.0에서는 Optional Chaining 이 도입되었습니다. ? 코드를 이용해 다음과 같이 작성할 수 있습니다.

const name = user?.info?.name;

만약 user 또는 info가 정의되어 있지 않다면 name에는 errorthrow을 받아 undefined가 저장되게 됩니다.

?의 사용 예를 코드로 살펴보겠습니다.

// 만약 user가 있다면 user의 info를 제거합니다.
delete user?.info;

// ? 연산자를 사용하여 옵셔널로 함수를 호출합니다.
const userFirstName = user?.info?.getName?.().first;

// ? 연산자를 사용하여 배열의 속성에 동적으로 접근합니다.
const desktopCount = user?.info?.['desktop'].length

// 만약 배열이 null이거나 undefined이면 name은 undefined 를 반환합니다.
const index = 2
const name = users?.[index].name

Nullish Coalescing

JavaScript에서 일반적으로 || 연산자를 이용해 기본값을 설정할 수 있습니다.

const existUser = user => {
  return user.isActive || true;
}

v8.0에서는 || 연산자 대신 사용할 수 있는 ?? 연산자를 제공합니다.
위 코드를 새롭게 바꿔보면

const existUser = user => {
  return user.isActive ?? true;
}

위의 코드를 살펴보면 user.isActivefalse인 경우 true를 리턴하게 됩니다. 이는 프로그램에서 오류를 발생시킬 수 있죠.
|| 연산자는 앞의 변수가 undefined일 경우에 반환되는 값입니다. 그런데 false라는 값은 undefined로 인식되어 true`가 리턴 되는 것입니다.

이런 경우 ?? 연산자를 사용하여 user.isActivefalse라 하더라도 값이 존재하기때문에 `false를 리턴하게 됩니다.

Optional Chaining + Nullish Coalescing

? 연산자를 사용할 때 ??연산자를 사용하여 기본값을 설정할 수 있습니다.

const name = user?.info?.name ?? 'unknown'

위의 예제에서 user개체에 info안에 name속성이 없다면 name을 알 수 없습니다.
이럴 때 ?? 연산자를 사용하여 값이 존재하지 않을 때 기본값을 설정할 수 있습니다.

정리

다른 바뀐내용들도 많습니다.

  • 통화, 언어 자동변환
  • Local Storage API
  • 날짜 형식의 국제 포맷 변환

등등..

주요하게 변한 Optional ChainingNullish Coalescing 에 대해서 정리해보았습니다.
수정요청과 지적은 언제나 감사합니다.