ECMAScript 2022
JavaScript 버전 번호
구형 ECMAScript 버전은 숫자로命名됩니다: ES5 및 ES6.
2016년부터 버전 이름은 연도로命名됩니다: ES2016, 2018, 2020, 2022.
ES2022의 새로운 기능
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- class 필드 선언
- private 메서드와 필드
경고:
이 기능들은 상대적으로 새로운 기능입니다.
구형 브라우저에서는 대체 코드(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월 |