Node.js v14.0이 릴리즈 되었습니다. 2020년 10월말까지는 Active LTS 상태에서 사용할 수 있습니다.
Node.js v14.0은 최신 JS를 지원하는 V8.81을 사용하도록 업데이트 되었습니다.
과연 Node.js v14에서는 어떤게 새로워졌는지 알아보겠습니다.
개발자는 다음과 같은 코드에 접근할 때 속성이 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
에는 error
의 throw
을 받아 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
JavaScript에서 일반적으로 ||
연산자를 이용해 기본값을 설정할 수 있습니다.
const existUser = user => {
return user.isActive || true;
}
v8.0에서는 ||
연산자 대신 사용할 수 있는 ??
연산자를 제공합니다.
위 코드를 새롭게 바꿔보면
const existUser = user => {
return user.isActive ?? true;
}
위의 코드를 살펴보면 user.isActive
가 false
인 경우 true
를 리턴하게 됩니다. 이는 프로그램에서 오류를 발생시킬 수 있죠.
||
연산자는 앞의 변수가 undefined
일 경우에 반환되는 값입니다. 그런데 false라는 값은
undefined로 인식되어
true`가 리턴 되는 것입니다.
이런 경우 ??
연산자를 사용하여 user.isActive
가 false
라 하더라도 값이 존재하기때문에 `false를 리턴하게 됩니다.
?
연산자를 사용할 때 ??
연산자를 사용하여 기본값을 설정할 수 있습니다.
const name = user?.info?.name ?? 'unknown'
위의 예제에서 user
개체에 info
안에 name
속성이 없다면 name
을 알 수 없습니다.
이럴 때 ??
연산자를 사용하여 값이 존재하지 않을 때 기본값을 설정할 수 있습니다.
다른 바뀐내용들도 많습니다.
등등..
주요하게 변한 Optional Chaining
과 Nullish Coalescing
에 대해서 정리해보았습니다.
수정요청과 지적은 언제나 감사합니다.