(번역) Ecma 인터내셔널에서 ECMAScript 2024를 승인했습니다: 새로운 기능은 무엇일까요?

sehyun hwang·2024년 7월 28일
13

FE 번역글

목록 보기
33/33
post-thumbnail

원문 : https://2ality.com/2024/06/ecmascript-2024.html#the-editors-of-ecmascript-2024

2024년 6월 26일, 제127차 Ecma 총회에서 ECMAScript 2024 언어 사양이 승인되어 이제 공식적으로 표준이 되었습니다.

이 글에서는 새로워진 내용을 함께 살펴보겠습니다.


  1. ECMAScript 2024의 저자
  2. ECMAScript 2024의 새로운 기능은 무엇일까요?
  3. ECMAScript 2024가 수록된 무료 책자

1. ECMAScript 2024의 저자

이번 릴리즈의 저자는 다음과 같습니다.

  • Shu-yu Guo
  • Michael Ficarra
  • Kevin Gibbons

2. ECMAScript 2024의 새로운 기능은 무엇일까요?

2.1 동기식 이터러블(iterable) 그룹화

Map.groupBy()는 이터러블 내의 아이템을 콜백이 제공하는 키로 그룹화하여 Map entries에 넣습니다.

assert.deepEqual(
  Map.groupBy([0, -5, 3, -4, 8, 9], x => Math.sign(x)),
  new Map()
    .set(0, [0])
    .set(-1, [-5,-4])
    .set(1, [3,8,9])
);

Map 대신 객체를 반환하는 Object.group()도 있습니다.

assert.deepEqual(
  Object.groupBy([0, -5, 3, -4, 8, 9], x => Math.sign(x)),
  {
    '0': [0],
    '-1': [-5,-4],
    '1': [3,8,9],
    __proto__: null,
  }
);

두 메서드 중에 하나를 선택하는 방법에 대한 팁과 더 많은 예제를 살펴보려면 "자바스크립트 탐구하기"를 참조하세요.

2.2 Promise.withResolvers()

Promise.withResolvers()는 이행(resolve)하기 위한 프로미스를 생성하는 새로운 방법을 제공합니다.

const { promise, resolve, reject } = Promise.withResolvers();

2.3 정규 표현식 플래그 /v

새로운 정규 표현식 플래그 /v (.unicodeSets)는 다음의 기능들을 제공합니다.

  • Unicode string properties에 대한 이스케이프 (😵‍💫는 3개의 코드 포인트로 이루어져 있습니다)
    // 이전: /u를 통한 Unicode code point property `Emoji` 사용
    assert.equal(
      /^\p{Emoji}$/u.test('😵‍💫'), false
    );
    // 현재: /v를 통한 Unicode string property `RGI_Emoji` 사용
    assert.equal(
      /^\p{RGI_Emoji}$/v.test('😵‍💫'), true
    );
  • 문자 클래스에서 \q{}를 통한 문자열 리터럴
    > /^[\q{😵‍💫}]$/v.test('😵‍💫')
    true
    > /^[\q{abc|def}]$/v.test('abc')
    true
  • 문자 클래스에 대한 연산 설정
    > /^[\w--[a-g]]$/v.test('a')
    false
    > /^[\p{Number}--[0-9]]$/v.test('٣')
    true
    > /^[\p{RGI_Emoji}--\q{😵‍💫}]$/v.test('😵‍💫')
    false
  • Unicode property 이스케이프가 [^...]를 통해 부정되는 경우 /i 매칭 개선

2.4 ArrayBuffers와 SharedArrayBuffers에 관한 새로운 기능

ArrayBuffers에 두 가지 새로운 기능이 추가되었습니다.

  • 자체적으로 크기를 조정할 수 있습니다.
    const buf = new ArrayBuffer(2, {maxByteLength: 4});
    // `typedArray`는 offset 2에서 시작합니다
    const typedArray = new Uint8Array(buf, 2);
    assert.equal(
      typedArray.length, 0
    );
    buf.resize(4);
    assert.equal(
      typedArray.length, 2
    );
  • 전송을 위한 .transfer() 메서드가 추가되었습니다.

SharedArrayBuffers의 크기를 늘릴 수는 있지만 이미 할당된 크기를 줄일 순 없습니다. 또한 전송할 수 없기 때문에 ArrayBuffers에 있는 .transfer() 메서드가 없습니다.

2.5 문자열이 올바른지 형식인지 보장하기

다음의 두 가지 새로운 메서드는 (UTF-16 코드 유닛에 관하여) 문자열이 올바른 형식인지 보장하는 데 도움을 줍니다.

2.6 Atomics.waitAsync()

Atomics.waitAsync()을 사용하면 공유 메모리의 변경을 비동기적으로 기다릴 수 있습니다. 더 자세한 내용은 MDN Web Docs를 참고하세요.

3. ECMAScript 2024가 수록된 무료 책자

제가 집필한 "자바스크립트 탐구하기 (ES2024 판)"는 온라인에서 무료로 보실 수 있습니다. 특히 다음 두 챕터에서 다루고 있습니다.

0개의 댓글