드디어 공개된 ECMAScript 2025, 이번에는 뭐가 달라졌을까?
2025년 6월 25일, JavaScript의 공식 표준인 ECMAScript의 새로운 버전, ECMAScript 2025가 정식으로 승인되었습니다. 매년 업데이트되는 ECMAScript는 브라우저 환경과 JavaScript 엔진의 변화에 발맞춰 끊임없이 진화해왔습니다. 이번 버전은 개발자들이 실무에서 자주 겪는 문제를 해결할 수 있도록 다양한 기능을 강화했으며, 특히 반복 처리, 모듈 시스템, 정규표현식, 자료구조, 부동소수점 처리 등 핵심 영역에서 의미 있는 변화가 있었습니다.
이 글에서는 ECMAScript 2025에 새롭게 추가된 주요 기능들을 간결하고 명확하게 정리하고, 각각의 기능이 어떤 문제를 해결하며 어떻게 활용할 수 있는지를 구체적인 예제를 통해 소개합니다.
ECMAScript 2025 개요
- 공식 승인일: 2025년 6월 25일
- 승인 기관: Ecma International (129차 총회)
- 주요 변경 사항:
- Import attributes 및 JSON 모듈 공식 지원
- Iterator helper 메서드 추가
- Set 객체 기능 확장
- 정규표현식(RegExp) 기능 강화
- Promise.try() 도입
- 16비트 부동소수점(float16) 지원
Import Attributes와 JSON 모듈 공식 지원
기존에는 JavaScript가 아닌 리소스(JSON 등)를 import할 때 타입 지정이 어려웠습니다. ECMAScript 2025에서는 import attributes 문법을 도입하여 모듈 유형을 명시적으로 정의할 수 있게 되었습니다. 특히 JSON 모듈을 공식적으로 지원하게 되어 개발 편의성이 향상되었습니다.
import configData from './data.json' with { type: 'json' };
동적 import에서도 동일한 방식으로 속성을 지정할 수 있어, 코드의 일관성과 명확성이 개선됩니다.
Iterator Helper Methods 도입
배열 메서드처럼 반복 가능한 객체에 사용할 수 있는 새로운 헬퍼 메서드들이 추가되었습니다. 기존 배열 메서드를 반복자(iterator) 형태로 재해석한 것으로, 중간 배열을 생성하지 않고 필요한 만큼만 데이터를 처리할 수 있습니다.
도입된 메서드:
- 기존 메서드 기반: map, filter, flatMap, some, every, find, reduce, forEach
- 신규 메서드: drop, take, toArray
const result = someIterator
.map(x => x * 2)
.filter(x => x > 10)
.take(5)
.toArray();
이는 대용량 데이터나 비동기 스트림 처리에서 특히 유용합니다.
Set 객체 기능 대폭 강화
Set 객체에 수학적 집합 연산이 가능하도록 여러 메서드가 추가되었습니다. 이를 통해 집합 간 관계를 더욱 직관적으로 처리할 수 있습니다.
추가된 연산 메서드:
- Set.prototype.union(other)
- Set.prototype.intersection(other)
- Set.prototype.difference(other)
- Set.prototype.symmetricDifference(other)
관계 판별 메서드:
- isSubsetOf(other)
- isSupersetOf(other)
- isDisjointFrom(other)
const a = new Set([1, 2, 3]);
const b = new Set([3, 4, 5]);
const union = a.union(b); // Set { 1, 2, 3, 4, 5 }
정규표현식(RegExp) 기능 강화
정규표현식에도 여러 가지 실용적인 기능이 추가되었습니다.
- RegExp.escape()
- 문자열을 자동으로 정규표현식에서 안전하게 사용할 수 있도록 이스케이프 처리
const safePattern = new RegExp(RegExp.escape(userInput));
- 인라인 플래그 지원
- 정규표현식 내부 특정 부분에만 플래그를 적용 가능
/^x(?i:HELLO)x$/ // HELLO 부분만 대소문자 구분 없음
- 중복 이름 캡처 그룹
- 분기 패턴(branch) 내에서 동일한 캡처 그룹 이름 사용 가능
/(?<chars>a+)|(?<chars>b+)/v
Promise.try() 도입
동기/비동기 코드의 혼합 사용 시, try...catch와 Promise를 결합하는 방식이 복잡했습니다. Promise.try()는 동기 코드도 Promise로 감싸서 일관된 에러 처리가 가능하게 합니다.
Promise.try(() => {
return mayThrowError(); // 동기 or 비동기 가능
}).catch(error => {
console.error('에러 발생:', error);
});
16비트 부동소수점(float16) 지원
데이터 처리 성능 향상을 위해 16비트 부동소수점이 새롭게 지원됩니다.
- Math.f16round(): float16으로 반올림
- Float16Array: 새로운 TypedArray 타입
- DataView.getFloat16(), setFloat16(): DataView에서 사용 가능
const rounded = Math.f16round(3.14159); // 3.140625
메모리 사용량이 민감한 환경이나 머신러닝, 3D 렌더링 등에서 효과적입니다.
ECMAScript 2025는 단순한 문법 추가를 넘어, 실무에서 자주 마주하는 불편함을 줄이는 데 집중한 업데이트입니다. 대용량 데이터 처리, 복잡한 모듈 로딩, 정규표현식 관리 등 다양한 상황에서 실질적인 개선 효과를 기대할 수 있습니다.
특히 Iterator helper, Set 연산 메서드, Promise.try()는 일상적인 JavaScript 코드에 바로 적용할 수 있는 기능들입니다. 앞으로의 프론트엔드 개발 환경에서 생산성을 높이는 데 큰 역할을 할 것으로 보입니다.
새로운 기능들을 미리 학습하고 프로젝트에 점진적으로 도입해본다면, 변화에 능동적으로 대응하는 개발자로 한 걸음 더 성장할 수 있을 것입니다.
https://2ality.com/2025/06/ecmascript-2025.html
Ecma International approves ECMAScript 2025: What’s new?
Ecma International approves ECMAScript 2025: What’s new? (Ad, please don’t block) On 25 June 2025, the 129th Ecma General Assembly approved the ECMAScript 2025 language specification (press release), which means that it’s officially a standard now. T
2ality.com