기존 await
를 사용하려면 async
함수 내에서만 가능했다.
(async function () {
await foo();
})();
하지만, ES2022부터 이러한 규칙이 사라지고, await
를 async
함수없이 모듈에서 아래와 같이 작성가능해졌다.
await foo();
이 기능을 통해 오류의 원인을 설명하여, 더 나은 오류 메시지를 만들 수 있다.
기존 오류를 만들 때는 오류 메시지를 작성하는 것 밖에 할 수 없었다.
new Error("This is the Error Message!");
하지만 ES2022부터 무엇이 오류를 발생시켰는지에 대해 설명할 수 있다. 그래서 정확히 무엇이 잘못되었는지 구체적으로 알 수 있으며, 동일한 오류메시지를 사용하지만 다른 원인을 작성할 수 있다.
또한, .cause
를 액세스할 수 있다.
const err = new Error("This is the Error Message!", { cause: "Test Message" });
err.message; // This is the Error Message!
err.cause; // Test Message
.at
을 활용하면, 배열의 모든 인덱스에 액세스할 수 있다.
const number = ["1", "2", "3", "4", "5"];
number.at(2); // 2
이전에도 대괄호를 사용하여 액세스할 수 있었지만, 대괄호와의 차이점은 뒤로 검색가능하다는 점이다. 대괄호는 -1 로 검색할 수 없었지만, .at을 통하면 가능하다.
const number = ["1", "2", "3", "4", "5"];
number.at(2); // 2
nubmer.at(-1); // 5
~~number[-1]; // 불가능~~
이것을 통해, 자바스크립트가 조금 더 OOP
스럽게 느껴지게 한다.
이전에는 불가능했던 Private
메서드 및 속성을 가질 수 있으며, static
메서드를 사용할 수 있다.