자바스크립트(JavaScript)는 웹 개발에서 필수적인 프로그래밍 언어로, 꾸준한 업데이트를 통해 성능과 기능이 향상되고 있습니다. 특히 ECMAScript(ES) 표준을 기반으로 매년 새로운 기능이 추가됩니다.
이번 글에서는 자바스크립트의 주요 버전과 각 버전별 특징을 정리해보겠습니다.
1. 자바스크립트의 역사와 ECMAScript 표준
✅ 자바스크립트(JavaScript)란?
- 1995년 넷스케이프(Netscape)에서 웹 브라우저용 스크립트 언어로 개발
- 웹 페이지의 동적 기능(애니메이션, 이벤트 처리 등)을 담당
- 현재 **브라우저(Chrome, Edge, Firefox, Safari)**뿐만 아니라 **서버(Node.js)**에서도 사용됨
✅ ECMAScript(ES)란?
- 자바스크립트의 표준화된 버전으로, ECMA-262에서 정의
- 2015년부터 매년 새로운 기능을 추가
📌 자바스크립트와 ECMAScript는 같은 개념이 아니지만, 일반적으로 동일한 의미로 사용됨
2. 자바스크립트 주요 버전 및 특징 정리
| 버전 | 출시 연도 | 주요 특징 |
|---|---|---|
| ES3 | 1999년 | try-catch 예외 처리, do-while, switch, getter/setter |
| ES5 | 2009년 | strict mode, JSON 지원, Object.defineProperty() |
| ES6 (ES2015) | 2015년 | let, const, arrow function, class, Promise 도입 |
| ES7 (ES2016) | 2016년 | Array.prototype.includes(), Exponentiation operator (**) |
| ES8 (ES2017) | 2017년 | async/await, Object.entries(), Object.values() |
| ES9 (ES2018) | 2018년 | Rest/Spread, Promise.finally(), 비동기 이터레이터 |
| ES10 (ES2019) | 2019년 | flat(), flatMap(), Object.fromEntries() |
| ES11 (ES2020) | 2020년 | nullish coalescing(??), optional chaining(?.), BigInt 지원 |
| ES12 (ES2021) | 2021년 | replaceAll(), Promise.any(), 논리 할당 연산자 |
| ES13 (ES2022) | 2022년 | at(), top-level await, class fields |
| ES14 (ES2023) | 2023년 | Array findLast(), Symbol.metadata, import attributes |
| ES15 (ES2024 예상) | 2024~2025년 | Set operations (union, intersection), async context tracking |
3. 주요 ECMAScript 버전별 상세 기능
🔹 ES3 (1999년) – 초창기 버전
✅ try-catch 예외 처리 도입
✅ do-while, switch 문 추가
✅ getter, setter 지원
📌 초기 브라우저에서 동작했던 가장 널리 사용된 버전
🔹 ES5 (2009년) – 현대적인 자바스크립트의 시작
✅ "use strict"; (엄격 모드) 도입
✅ JSON 지원 (JSON.parse(), JSON.stringify())
✅ Object.defineProperty()로 객체 속성 제어 가능
"use strict";
let obj = { a: 1 };
Object.defineProperty(obj, "b", { value: 2, writable: false });
console.log(obj.b); // 2
obj.b = 3; // 에러 발생 (strict mode)
📌 IE9 이상에서 지원되며, 안정적인 웹 개발이 가능해짐
🔹 ES6 (2015년) – 가장 큰 변화 (현대 JS의 기준)
✅ let, const 키워드 추가 (블록 스코프)
✅ Arrow function (=>) 도입
✅ Class 문법 추가
✅ Promise 및 default parameter 지원
const add = (a, b) => a + b;
console.log(add(5, 3)); // 8
📌 ES6 이후부터 자바스크립트는 현대적인 개발 패턴을 따르게 됨
🔹 ES7 (2016년) – 작은 개선
✅ Array.prototype.includes() 메서드 추가
✅ ** (지수 연산자) 도입
console.log([1, 2, 3].includes(2)); // true
console.log(2 ** 3); // 8
📌 간단하지만 유용한 연산 기능 추가
🔹 ES8 (2017년) – 비동기 프로그래밍 개선
✅ async/await 지원
✅ Object.entries() 및 Object.values() 추가
async function fetchData() {
let response = await fetch("https://api.example.com/data");
let data = await response.json();
console.log(data);
}
📌 비동기 코드가 훨씬 간결하고 직관적으로 변경됨
🔹 ES9 ~ ES12 (2018~2021년) – 성능 및 문법 개선
✅ Promise.finally() (ES9)
✅ Object.fromEntries() (ES10)
✅ nullish coalescing(??) 및 optional chaining(?.) (ES11)
✅ replaceAll(), Promise.any() (ES12)
let user = { profile: { name: "Alice" } };
console.log(user.profile?.name ?? "Guest"); // "Alice"
📌 선택적 체이닝(?.)과 널 병합 연산자(??)는 코드 가독성을 높여줌
🔹 ES13 ~ ES15 (2022~2025년) – 최신 기능 및 예상 업데이트
✅ Array.at() (ES13)
✅ import attributes (ES14)
✅ Set operations (union, intersection) (ES15 예상)
let arr = [10, 20, 30];
console.log(arr.at(-1)); // 30
📌 배열 조작이 더 직관적으로 개선됨
4. 최신 자바스크립트 버전을 학습하는 방법
✅ MDN 웹 문서 – https://developer.mozilla.org/
✅ ECMA 공식 문서 – https://tc39.es/
✅ Chrome V8 블로그 – 최신 엔진 업데이트 확인 가능
📌 최신 브라우저(Chrome, Edge, Firefox)에서는 ES6+ 버전이 기본적으로 지원되므로 최신 기능을 활용하는 것이 좋습니다.
5. 마무리
자바스크립트는 ECMAScript(ES) 표준을 기반으로 매년 새로운 기능이 추가되며, 최신 버전을 학습하는 것이 중요합니다.
💡 자바스크립트 버전 요약
✅ ES5 (2009) – "use strict";, JSON 지원
✅ ES6 (2015) – let/const, class, Promise, arrow function
✅ ES8 (2017) – async/await, Object.entries()
✅ ES11 (2020) – nullish coalescing(??), optional chaining(?.)
✅ ES14 (2023) – Array findLast(), import attributes
앞으로도 자바스크립트의 최신 업데이트를 꾸준히 학습하여 더 효율적인 코드 작성이 가능하도록 준비해 보세요! 🚀💡