JS

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');
  });
반응형