FRONTEND

JavaScript ES2024 신기능 완전 정복

junetapa2025. 8. 1814 min read

JavaScript ES2024(ES15)의 모든 신기능을 실무 관점에서 완벽 분석한다. 불변성을 지키면서도 간결한 코드를 작성할 수 있게 해주는 배열 메서드들과 유틸리티 함수들을 다룬다.

JavaScript ES2024(ES15)가 2024년 6월에 정식 발표되면서 웹 개발 생태계에 새로운 바람이 불고 있다. 이번 업데이트는 개발자 경험을 크게 향상시키는 실용적인 기능들로 가득하다.

toReversed() - 불변성을 지키는 배열 뒤집기

기존의 reverse() 메서드는 원본 배열을 변경했지만, 새로운 toReversed()는 원본을 유지하면서 뒤집힌 새 배열을 반환한다.

JavaScript - toReversed() // ES2024 - toReversed() const numbers = [1, 2, 3, 4, 5]; const reversed = numbers.toReversed(); console.log(numbers); // [1, 2, 3, 4, 5] (원본 유지) console.log(reversed); // [5, 4, 3, 2, 1] // 실무 활용 const userList = [ { name: '김철수', age: 25 }, { name: '박영희', age: 30 } ]; const reverseOrder = userList.toReversed();
ES2024 신기능

toReversed(), toSorted(), toSpliced() 등 모든 배열 변경 메서드에 불변성 버전이 추가되어 함수형 프로그래밍이 더 쉬워졌다.

Array.with() - 특정 인덱스 값 변경

배열의 특정 인덱스 값을 변경할 때도 불변성을 유지할 수 있다.

JavaScript - with() const fruits = ['apple', 'banana', 'orange']; const updated = fruits.with(1, 'grape'); console.log(fruits); // ['apple', 'banana', 'orange'] console.log(updated); // ['apple', 'grape', 'orange'] // React 상태 업데이트에서 활용 const toggleTodo = (index) => { setTodoList(prev => prev.with(index, { ...prev[index], completed: !prev[index].completed }) ); };

Object.groupBy() - 객체 그룹화의 혁신

배열을 특정 조건으로 그룹화하는 작업이 훨씬 간단해졌다.

JavaScript - Object.groupBy() const users = [ { name: '김철수', department: '개발팀', age: 25 }, { name: '박영희', department: '디자인팀', age: 30 }, { name: '이민수', department: '개발팀', age: 28 } ]; // ES2024 - 한 줄로 그룹화 const grouped = Object.groupBy(users, u => u.department); // { '개발팀': [...], '디자인팀': [...] }

Promise.withResolvers()

Promise와 resolve, reject를 분리해서 사용할 수 있는 새로운 패턴이다.

JavaScript - Promise.withResolvers() // ES2024 const { promise, resolve, reject } = Promise.withResolvers(); // 파일 업로드 등 외부에서 resolve 호출이 필요한 경우 유용 class FileUploader { startUpload(fileId, file) { const { promise, resolve, reject } = Promise.withResolvers(); this.uploadPromises.set(fileId, { resolve, reject }); this.performUpload(fileId, file); return promise; } }

String.isWellFormed() - UTF-16 검증

문자열이 올바른 UTF-16 형식인지 검증할 수 있다. API 응답 데이터 검증이나 사용자 입력 유효성 검사에 유용하다.

JavaScript - isWellFormed() "안녕하세요".isWellFormed(); // true "\uD800".isWellFormed(); // false (단독 high surrogate) function validateInput(text) { if (!text.isWellFormed()) { throw new Error('잘못된 문자 인코딩'); } return text; }

브라우저 지원 현황과 폴리필

ES2024 기능들의 브라우저 지원 현황을 확인하고 필요시 폴리필을 사용하면 된다.

실무 활용 팁

ES2024의 새로운 기능들은 특히 함수형 프로그래밍과 불변성을 중시하는 현대 웹 개발에 최적화되어 있다. React, Vue 등의 프레임워크에서 상태 관리가 훨씬 편해진다.

마무리

JavaScript ES2024는 개발자 경험을 크게 향상시키는 실용적인 기능들을 제공한다. 특히 불변성을 지키면서도 간결한 코드를 작성할 수 있게 해주는 배열 메서드들과 Object.groupBy() 같은 유틸리티 함수들은 일상적인 개발 작업을 훨씬 편하게 만들어준다.

이러한 신기능들을 점진적으로 도입하면서 더 안전하고 읽기 쉬운 JavaScript 코드를 작성해보길 권한다.

JavaScriptES2024ES15신기능웹개발
junetapa
junetapa
AI 도구를 직접 써보고 솔직한 경험을 공유하는 개발자.
TwitterFacebookURL 복사