JS & TS
Javascript ES9 문법정리
Kir93
2023. 10. 16. 15:40
728x90
반응형
ES9(ECMAScript 2018)은 특별히 새로운 기능이 많이 추가되지는 않았지만 지금도 항상 사용하는 내용들이 포함된 버전입니다.
1. 비동기 반복 (Asynchronous Iteration)
ES9에서는 비동기 반복이 가능하도록 for-await-of 루프가 추가되었습니다.
이를 통해 비동기 데이터를 간편하게 반복할 수 있습니다.
// 이전
const asyncData = [asyncFunc1(), asyncFunc2(), asyncFunc3()];
Promise.all(asyncData)
.then(results => {
for (const result of results) {
console.log(result);
}
});
// ES9
const asyncData = [asyncFunc1(), asyncFunc2(), asyncFunc3()];
for await (const result of asyncData) {
console.log(result);
}
2. Rest/Spread 프로퍼티 (Rest/Spread Properties)
ES6에서 추가되었던 rest, spread 프로퍼티가 더욱 발전했습니다.
ES9에서는 객체에서의 Rest와 Spread 프로퍼티가 도입되어, 객체의 프로퍼티를 추출하거나 복사하는 작업이 더 쉬워졌습니다.
// 이전
const obj = { a: 1, b: 2, c: 3, d: 4 };
const rest = { c: obj.c, d: obj.d};
console.log(rest); // { c: 3, d: 4 }
// ES9
const { a, b, ...rest } = { a: 1, b: 2, c: 3, d: 4 };
console.log(rest); // { c: 3, d: 4 }
3. 정규 표현식 dotAll Flag (Regex dotAll Flag)
정규표현식에 새롭게 추가된 s flag (dotAll)입니다.
원래 . 표현식 에선 개행문자를 제외한 모든 문자였지만, s flag를 달면 개행문자도 포함하게 됩니다.
console.info(/js.test/.test('js\ntest')); // false
console.info(/js.test/s.test('js\ntest')); // true
4. Promise.finally
ES9에서는 Promise 객체에 finally 메서드가 추가되어, 프로미스가 성공하든 실패하든 무조건 실행되는 코드를 지원합니다.
// 이전
promise
.then(()=> {
console.log('success');
console.log('finally');
})
.catch(()=> {
console.log('error');
console.log('finally');
});
// ES9
promise
.then(() => {
console.log('success');
})
.catch(error => {
console.log('error');
})
.finally(() => {
console.log('finally');
});
반응형