반응형
ES2020에서 제공되는 기능이 추가 및 정의되었습니다.
String.prototype.matchAll
match()를 사용하는 경우 정규식에 해당하는 값만을 반환하였습니다. 그러나 이제는 matchAll()을 사용하게 되면 반복자(iterator) 형태로
반환하게 되었습니다.
const regex = /t(e)(st(\d?))/g;
const string = 'test1test2';
string.match(regex); // gives ['test1', 'test2']
const matchs = string.matchAll(regex); // gives ['test1', 'test2']
matchs.next();
// {
// done: false
// value: Array(4)
// 0: "test1"
// 1: "e"
// 2: "st1"
// 3: "1"
// groups: undefined
// index: 0
// input: "test1test2"
// }
import()
특정 조건에서 모듈을 import 해야
한다면, 이제는 import
를 동적으로 할 수 있습니다.
import()를 사용하는 경우 Promise를 반환합니다.
if (true) {
import('module1.js')
.then(module => {
console.debug('import module success');
})
.catch(err => {
console.debug('import module fail');
});
} else {
console.debug('not import module');
}
BigInt
2^53
보다 큰 경우를 표시할 수 있는 타입입니다.
const x = Number.MAX_SAFE_INTEGER; // ↪ 9007199254740991, 2^53 보다 1 작은 수
const y = x + 1; // ↪ 9007199254740992, 정상 작동입니다.
const z = x + 2 // ↪ 9007199254740992, 기대했던 값이 아닌 최대값으로 표시됩니다.
BigInt의 사용방법은 n을 붙여서 사용합니다.
Promise.allSettled
Promise.all
는 Promise가 하나라도 에러가 발생하면, catch로 이동하게 됩니다.
const promises = [ fetch('a.html'), fetch('b.html') ];
try {
await Promise.all(promises);
console.debug('모든 Promise가 정상적으로 완료되었을때 해당 로그가 출력됩니다.');
} catch(e) {
console.debug('하나라도 에러가 발생하면 해당 로그가 출력됩니다.');
}
이제는 Promise.allSettled
을 사용함으로써 에러가 발생하더라도 catch로 이동하지 않습니다.
const promises = [ fetch('a.html'), fetch('b.html') ];
Promise.allSettled(promises).finally(() => {
console.debug('성공 유무에 상관없이 해당 로그가 출력됩니다.');
});
Promise.allSettled
의 관한 상세한 내용은 여기에서 확인할 수 있습니다.
globalThis
전역 객체를 Web에서는 window
, self
, this
, frames
로 접근 가능하며, node.js에서는 global
또는 this
로 접근 가능하였던 것을 Web, node.js에서 globalThis
로 접근할 수 있게 되었습니다.
window === globalThis // true
global === globalThis // true
Optional Chaining
객체 프로퍼티의 undefined
또는 null
인 경우를 체크하기 위한 방법입니다.
const response = { setting: null };
const animationDuration = response.settings?.animationDuration ?? 300; // 300
Nullish coalescing Operator
??
연산자 기준으로 왼쪽 값이 undefined
또는 null
일 경우에 오른쪽 값을 반환합니다.
const response = {
settings: {
nullValue: null,
height: 400,
animationDuration: 0,
headerText: '',
showSplashScreen: false
}
};
const undefinedValue = response.settings.undefinedValue ?? 'some other default'; // result: 'some other default'
const nullValue = response.settings.nullValue ?? 'some other default'; // result: 'some other default'
const headerText = response.settings.headerText ?? 'Hello, world!'; // result: ''
const animationDuration = response.settings.animationDuration ?? 300; // result: 0
const showSplashScreen = response.settings.showSplashScreen ?? true; // result: false
import.meta
현재 모듈의 metadata
를 반환합니다.
import.meta // file:///home/user/my-module.js
es2020에 방문하시면 더 자세한 내용을 확인할 수 있습니다.
반응형
'Develope > Javascript' 카테고리의 다른 글
[Javascript]JSON.stringify(), JSON.parse() 사용법 (0) | 2020.06.04 |
---|---|
[Javascript]구조분해할당(Destructuring) (0) | 2020.05.26 |
[Javascript]원시타입(Primitive Type) (0) | 2020.05.25 |
[Javascript]비교연산자(Comparison Operators) (0) | 2020.05.24 |
[Javascript]논리연산자(Logical Operators) (0) | 2020.05.21 |