ECMASCRIPT 2022가 나와있고, ES13에 대해서도 다루겠지만, 오늘은 ES12에서 잘 정착되어, 가장 유용하게 사용하고 있는 3가지 기능에 대해서 소개해보려고 합니다.
1. Logical Assignment Operator(논리 할당 연산자)
논리할당연산자는 논리 연산을 결합할 수 있습니다.
// 컨벤션을 고수하는 방식
if (!a) {
a = b;
}
// 또는 간략하게
a = a || b;
a = a && b;
a = a ?? b;
// 새로운 방식
a ||= b;
a &&= b;
a ??= b;
a &&=b 는 a가 참이면 b가 할당되고, a가 거짓이면 a가 할당됩니다.
a ??= b 는 a가 null이거나 undefined 이면, b가 할당되고, 아니라면 a가 할당됩니다.
처음에는 이해하기 까다로울 수 있지만, 팀에 널리 이해시키고 사용할 수 있습니다.
2. Promise.any
Promise.all과 반대로 생각하면 될 것 같네요.
Promise.all이 모든 Promise를 수행해야 then으로 넘어갈 수 있지만, Promise.any는 하나라도 수행되면 then으로 넘어갈 수 있습니다.
동시에 세 가지 요청을 합니다.
Promise.any([
fetch('https://google.com/').then(() => 'google'),
fetch('https://naver.com/').then(() => 'naver'),
fetch('https://apple.com/').then(() => 'apple')
]).then((any) => {
// 어떤 fetch가 성공해도 이리로 넘어오게 됩니다.
console.log(any);
// 'google'
}).catch((error) => {
// 모든 Promise가 실패했을 시에만 넘어오게 됩니다.
console.log(error);
});
에러도 여러개의 AggregateError에서 단일 error별로 나타날 수 있습니다.
Promise.any([
Promise.reject(new Error("error 1")),
...
]).then((any) => {
console.log(any);
}).catch((error) => {
console.log(error.message); // "All Promises rejected";
console.log(error.name); // "AggregateError";
console.log(error.errors); // [ Error: "error 1", Error: "error 2", ...]
});
3. Numeric Seperaor(숫자 구분 기호)
확실히 읽기가 편해집니다.
// 이전 방식
const count = 1000000;
const count2 = 838383838;
// 새로운 방식
const count = 1_000_000;
const count2 = 838_383_838;
'Javascript' 카테고리의 다른 글
[JS] event.stopPropagation()의 위험성 (0) | 2022.12.25 |
---|---|
Axios 인터셉터를 사용하는 4가지 방법 (0) | 2022.10.10 |
프록시란 무엇일까? (2) | 2022.10.03 |
파비콘 동적으로 변경하기 (0) | 2022.09.25 |
[Javascript] Try/Catch, Error를 다루는 방법 (0) | 2022.09.12 |
댓글