0w0

JavaScript ES2023 신기능

ES2023 / ES2022 / ES2021

2023년 첫 글로 ES2023 Finished Proposals 기능을 봅시다.

여담으로 Finished Proposals은 "여러 구현이 이미 존재한다" 전제이므로, 2023이라는 이름과 상관없이 이미 일부 브라우저에서는 사용가능합니다.

애초에 ES2023 새 기능은 전부 새 브라우저에 사용가능 합니다.

ES2023

Array find from last

꼬리에서부터 검색합니다.

const array1 = [5, 12, 8, 130, 4];

console.log(array1.find((element) => element > 10)); // 12
console.log(array1.findLast((element) => element > 10)); // 130

console.log(array1.findIndex((element) => element > 10)); // 1
console.log(array1.findLastIndex((element) => element > 10)); // 3

Array는 indexOflastIndexOf로 앞뒤로의 검출을 지원하고 있습니다.

하지만 findfindIndex는 어째서인지 findLast, findLastIndex가 없어서 비대칭 구조였습니다.

이에 findLast, findLastIndex를 추가했습니다.

이제는 뒤에서부터 검색하는 메서드가 생긴것이죠.

findLast는 2022년에부터 모든 브라우저에 지원됩니다.

Hashbang Grammar

파일 모두에 #! 만 주석으로 다룹니다.

#! hoge 주석

#! fuga 문법 오류

쉘스크립트 모두에는 자신을 어떤 프로그램으로 동작하는가 지정하는 shebang이 있습니다.

그리고 JavaScript 서버에서 실행환경인 Node도 shebang를 사용할 수 있습니다.

하지만 JavaScript에는 이러한 문법이 없으므로, Node와 같은 코드를 사용한다면 문법 오류가 됩니다.

즉 Node와 JavaScript에서 같은 소스를 사용할 수 없었죠.

그래서 JavaScript에도 모두에 #!만을 주석으로 다룰 수 있습니다.

주석으로 다루는 것은 맨 첫줄만이므로, 2행 이후부터는 코드로 다뤄집니다.

브라우저에서는 2019년 부터 이미 구현되어있었으며, Proposal이 이제야 구현을 따라온 느낌입니다.

감상

응?

2개뿐?

네, 맞습니다.

includes부터 시작한 JavaScript 현대적 수정입니다만, 어째서인가 2021년 중간부터 급격히 느려졌으며, 2022년에는 결국 2개뿐이 되었습니다.

(ES2023은 2022년에 만들어진 것이므로 보기에는 1년씩 밀립니다)

갑자기 기세가 꺽였습니다만, 이는 어떠한 연유일까요

commit 횟수는 그렇게까지 크게 변하지 않았습니다.

또, 새로운 Proposal 발행도 어느정도 유지되고 있으므로, TC39 활동이 정체되었다 느껴지지도 않습니다.

그렇다는 것은 이는 브라우저 쪽 구현에서 구현이 진행되지 않았다는 말일까요?

TC39는 몇 개월마다 회의가 있으며, 각 브라우저 제작자나 관계자가 모여서 Proposal 방향성과 진전 등을 논의합니다.

시험삼아 글을 쓰는 와중에 2022년 9월에 행해진 회의를 보면, Stage3 도착하고 나서 1년 이상 지난 Temporal 사양이 말미에 난항을 겪고 있었습니다.

이러한 저어가 정체하고 있는 이유의 하나일지도 모릅니다.

하지만 읽은건 아니니 자세한건 잘 모르겠네요.