자바스크립트(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
앞으로도 자바스크립트의 최신 업데이트를 꾸준히 학습하여 더 효율적인 코드 작성이 가능하도록 준비해 보세요! 🚀💡