ECMAScript 2022

JavaScript 버전 번호

구형 ECMAScript 버전은 숫자로命名됩니다: ES5 및 ES6.

2016년부터 버전 이름은 연도로命名됩니다: ES2016, 2018, 2020, 2022.

ES2022의 새로운 기능

경고:

이 기능들은 상대적으로 새로운 기능입니다.

구형 브라우저에서는 대체 코드(Polyfill)가 필요할 수 있습니다.

JavaScript Array at()

ES2022에서 배열 메서드가 도입되었습니다. at()

예제 1

fruits 배열의 세 번째 요소를 가져오기:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits.at(2);

본인이 직접 테스트해 보세요

예제 2

fruits 배열의 세 번째 요소를 가져오기:

const fruits = ["Banana", "Orange", "Apple", "Mango"];
let fruit = fruits[2];

본인이 직접 테스트해 보세요

at() 메서드는 지정된 인덱스의 요소를 배열에서 반환합니다.

at() 메서드와 [] 결과는 동일합니다。

2022 년 3 월부터 모든 현대 브라우저에서 지원됩니다 at() 메서드:

크롬 에지 파이어폭스 사파리 오페라
Chrome 92 Edge 92 파이어폭스 90 Safari 15.4 Opera 78
2021년 4월 2021 년 7 월 2021 년 7 월 2022 년 3 월 2021 년 8 월

주의:

많은 언어에서 음수 인덱스를 사용할 수 있습니다(예: [-1])객체/배열/문자열의 마지막 요소에 접근합니다.

이는 JavaScript에서 불가능합니다 왜냐하면 [] 배열과 객체에 접근하는 데 사용됩니다. obj[-1]은 객체의 마지막 속성이 아니라 -1 키의 값을 가리킵니다.

at() 이 문제를 해결하기 위해 ES2022에서 메서드가 도입되었습니다.

JavaScript String at()

ES2022에서 문자열 메서드가 도입되었습니다. at()

예제 1

name 문자열의 세 번째 문자를 가져오기:

const name = "W3Schools";
let letter = name.at(2);

본인이 직접 테스트해 보세요

예제 2

name 문자열의 세 번째 문자를 가져오기:

const name = "W3Schools";
let letter = name[2];

본인이 직접 테스트해 보세요

at() 메서드는 문자열에서 지정된 인덱스의 문자를 문자열에서 반환합니다。

at() 메서드와 [] 결과는 동일합니다。

2022 년 3 월부터 모든 현대 브라우저에서 지원됩니다 at() 메서드:

크롬 에지 파이어폭스 사파리 오페라
Chrome 92 Edge 92 파이어폭스 90 Safari 15.4 Opera 78
2021년 4월 2021 년 7 월 2021 년 7 월 2022 년 3 월 2021 년 8 월

RegExp d 수식자

ES2022는 추가했습니다 /d 수식자는 매칭의 시작과 끝을 나타냅니다。

인스턴스

let text = "aaaabb";
let result = text.match(/(aa)(bb)/d);

본인이 직접 테스트해 보세요

RegExp 수식자는 대소문자를 구분하지 않음, 그리고 다른 전체 검색을 지정하는 데 사용됩니다:

수식자 설명 테스트해 보세요
g 전체 매칭을 수행합니다 (모든 것을 찾기). 테스트해 보세요
i 대소문자를 구분하지 않는 매칭을 수행합니다。 테스트해 보세요
d 서브 문자열 매칭을 수행합니다 (ES2022 추가). 테스트해 보세요
m 다중 행 매칭을 수행합니다。 테스트해 보세요

Object.hasOwn()

ES2022는 속성이 객체의 자유속성인지 확인하는 안전한 방법을 제공합니다。

Object.hasOwn() 유사하게 Object.prototype.hasOwnProperty지만 모든 객체 유형을 지원합니다。

인스턴스

Object.hasOwn(myObject, age)

본인이 직접 테스트해 보세요

오류 원인

ES2022는 error.cause를 통해 오류의 근본 원인을 지정할 수 있게 합니다。

인스턴스

try { 
  connectData(); 
} 
  throw new Error("연결 실패.", { cause: err }); 
}

본인이 직접 테스트해 보세요

JavaScript await import

JavaScript 모듈은 실행 전에 필요한 임포트 자원을 기다릴 수 있습니다:

import {myData} from './myData.js';
const data = await myData();

JavaScript 클래스 필드 선언

class Hello {
  counter = 0; // 클래스 필드
}
const myClass = new Hello();
let x = myClass.counter;

2021 년 4 월부터 모든 현대 브라우저에서 클래스 필드 선언이 지원됩니다:

크롬 에지 파이어폭스 사파리 오페라
Chrome 72 에지 79 Firefox 69 사파리 14.1 Opera 60
2019 년 1 월 2020년 1월 2019 년 9 월 2021년 4월 2020년 1월

JavaScript 개인 메서드와 필드

class Hello {
  #counter = 0;  // 개인 필드
  #myMethod() {} // 개인 메서드
}
const myClass = new Hello();
let x = myClass.#counter; // 오류
myClass.#myMethod();      // 오류

2021년 6월부터 모든 현대 브라우저에서 개인 메서드와 필드를 지원합니다:

크롬 에지 파이어폭스 사파리 오페라
크롬 74 에지 79 파이어폭스 90 사파리 14.1 오페라 62
2019년 4월 2020년 1월 2021년 6월 2021년 4월 2019년 6월