본문으로 건너뛰기

import assertions

· 약 3분
Dan Clark ([@dandclark1](https://twitter.com/dandclark1)), import assertions를 강하게 주장하는 임포터

새로운 import assertions 기능을 사용하면 모듈 임포트 문에서 모듈 지정자와 함께 추가 정보를 포함할 수 있습니다. 이 기능의 초기 용도는 JSON 문서를 JSON 모듈로 임포트할 수 있도록 하는 것입니다:

개인 브랜드 검사 일명 `#foo in obj`

· 약 3분
마르야 헐타 ([@marjakh](https://twitter.com/marjakh))

in 연산자는 주어진 객체(또는 그 프로토타입 체인의 객체)에 주어진 속성이 있는지 테스트하는 데 사용할 수 있습니다:

const o1 = {'foo': 0};
console.log('foo' in o1); // true
const o2 = {};
console.log('foo' in o2); // false
const o3 = Object.create(o1);
console.log('foo' in o3); // true

개인 브랜드 검사 기능은 in 연산자를 확장하여 개인 클래스 필드를 지원합니다:

class A {
  static test(obj) {
    console.log(#foo in obj);
  }
  #foo = 0;
}

A.test(new A()); // true
A.test({}); // false

class B {
 #foo = 0;
}

A.test(new B()); // false; 동일한 #foo가 아님

개인 이름은 그것을 정의한 클래스 내부에서만 사용할 수 있으므로 테스트는 위의 static test와 같은 메서드에서와 같이 클래스 내부에서 발생해야 합니다.

하위 클래스 인스턴스는 소유 속성으로 부모 클래스에서 개인 필드를 받습니다:

class SubA extends A {};
A.test(new SubA()); // true

그러나 Object.create로 생성된 객체(또는 __proto__ 세터나 Object.setPrototypeOf를 통해 나중에 프로토타입이 설정된 경우)는 소유 속성으로 개인 필드를 받지 않습니다. 개인 필드 조회는 소유 속성에서만 작동하므로 in 연산자는 이러한 상속된 필드를 찾지 못합니다:

클래스 정적 초기화 블록

· 약 2분
Shu-yu Guo ([@_shu](https://twitter.com/_shu))

새로운 클래스 정적 초기화 블록 문법은 개발자가 특정 클래스 정의에 대해 한 번 실행되어야 할 코드를 수집하고 이를 한 곳에 모을 수 있게 합니다. 아래는 암호화 랜덤 숫자 생성기가 정적 블록을 사용하여 class MyPRNG 정의가 평가될 때 한 번 엔트로피 풀을 초기화하는 예제입니다.

JavaScript BigInt와 WebAssembly 통합

· 약 4분
Alon Zakai

JS-BigInt-Integration 기능은 JavaScript와 WebAssembly 간에 64비트 정수를 쉽게 전달할 수 있도록 합니다. 이 포스트는 그것이 무엇을 의미하며, 왜 유용한지를 설명합니다. 여기에는 개발자를 위해 더 간단해지고, 코드 실행 속도가 빨라지며, 빌드 시간도 단축되는 이점들이 포함됩니다.

`Intl.DisplayNames`

· 약 4분
Shu-yu Guo ([@_shu](https://twitter.com/_shu)) 과 Frank Yung-Fong Tang

전 세계를 대상으로 하는 웹 애플리케이션은 다양한 언어로 언어, 지역, 스크립트, 통화의 표시 이름을 보여줄 필요가 있습니다. 이러한 이름의 번역에는 데이터가 필요하며, 이는 Unicode CLDR에서 제공됩니다. 애플리케이션의 일부로 데이터를 포함시키는 것은 개발자 시간에 비용이 발생합니다. 사용자들은 언어 및 지역 이름의 일관된 번역을 선호할 가능성이 있으며, 세계의 지리적 변화에 맞춰 해당 데이터를 최신 상태로 유지하려면 지속적인 유지 관리가 필요합니다.

빠르고 병렬적인 애플리케이션과 WebAssembly SIMD

· 약 9분
Deepti Gandluri ([@dptig](https://twitter.com/dptig)), Thomas Lively ([@tlively52](https://twitter.com/tlively52)), Ingvar Stepanyan ([@RReverser](https://twitter.com/RReverser))

SIMD는 _단일 명령, 다중 데이터(Single Instruction, Multiple Data)_의 약자입니다. SIMD 명령은 응용 프로그램에서 데이터 병렬성을 활용하여 여러 데이터 요소에 동시에 동일한 작업을 수행하는 특수한 클래스의 명령입니다. 오디오/비디오 코덱, 이미지 프로세서와 같은 계산 집약적인 애플리케이션은 모두 SIMD 명령을 활용하여 성능을 가속화합니다. 대부분의 최신 아키텍처는 SIMD 명령의 일부 변형을 지원합니다.

RegExp 매치 인덱스

· 약 4분
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)), 새로운 기능을 정기적으로 표현

JavaScript는 이제 '매치 인덱스(match indices)'라는 새 정규 표현식 기능을 갖추게 되었습니다. JavaScript 코드에서 예약어와 일치하는 유효하지 않은 변수 이름을 찾아 변수 이름 아래에 캐럿(caret)과 '밑줄'을 출력하고 싶다고 상상해보세요:

String.prototype.replaceAll

· 약 3분
Mathias Bynens ([@mathias](https://twitter.com/mathias))

JavaScript에서 문자열을 다뤄본 적이 있다면, String#replace 메서드에 대해 들어본 적이 있을 가능성이 큽니다. String.prototype.replace(searchValue, replacement)는 지정한 매개변수에 따라 일부 일치 항목이 교체된 문자열을 반환합니다: