1. ECMAScript와 JavaScript
- JavaScript는 언어의 이름이고, ECMAScript는 그 표준.
- JavaScript의 모든 버전은 ECMAScript 표준에 기반.
- ECMAScript는 1997년 첫 표준 발표 이후 지속적으로 업데이트되고 있다.
2. ECMAScript 버전의 개요
ES1 (1997)
- 의의: 최초의 ECMAScript 표준.
- 주요 내용: 기본적인 JavaScript 기능 정의. 데이터 타입, 변수, 함수, 객체에 대한 기본적인 정의 포함.
ES2 (1998)
- 의의: ISO/IEC 국제 표준 준수를 위한 수정.
- 주요 내용: 기존 기능에서 큰 변화는 없었으나 표준화 과정의 일환.
ES3 (1999)
- 의의: JavaScript의 기능이 본격적으로 확장된 버전.
- 주요 내용: 정규 표현식 추가, try-catch 예외 처리, 문자열 메서드 추가, for-in 루프.
- 중요성: 오늘날에도 많은 코드가 ES3에 기반을 둠.
ES4 (취소됨)
- 배경: ES4는 JavaScript를 대대적으로 확장하려는 시도였지만, 복잡성과 브라우저 간 호환성 문제로 표준화되지 못함. 주요 제안 사항(클래스, 모듈 등)은 이후 버전(ES6)에 포함.
ES5 (2009)
- 의의: 10년 만의 대규모 업데이트로 JavaScript의 안정성을 높임.
- 주요 내용:
- Strict Mode: 엄격한 문법 체크로 오류를 예방.
"use strict"; x = 10; // ReferenceError
- JSON 지원 추가 (JSON.stringify, JSON.parse).
- 배열 메서드 추가: map, filter, forEach, reduce 등.
- 객체 프로퍼티 정의 및 접근 제어 (Object.defineProperty).
- Array.isArray()로 배열 여부 확인.
- Strict Mode: 엄격한 문법 체크로 오류를 예방.
ES6 (2015, ECMAScript 2015)
- 의의: JavaScript의 가장 중요한 업데이트 중 하나.
- 주요 내용:
- 새로운 변수 선언: let과 const로 블록 스코프 변수 사용 가능.
- 화살표 함수: 간단하고 가독성 높은 함수 선언.
const add = (a, b) => a + b;
- 템플릿 리터럴: 문자열 내 변수와 표현식 삽입.
const name = "Alice"; console.log(`Hello, ${name}!`);
- 클래스: 객체지향 프로그래밍을 위한 문법.
class Person { constructor(name) { this.name = name; } }
- 모듈 시스템: import와 export로 모듈화 가능.
- 디스트럭처링 할당: 배열과 객체에서 값을 추출.
const [a, b] = [1, 2]; const { name, age } = { name: "Alice", age: 25 };
- 스프레드 연산자: 배열과 객체를 쉽게 복사 및 병합.
const arr = [1, 2, 3]; const newArr = [...arr, 4, 5];
ES7 (2016, ECMAScript 2016)
- 주요 내용:
- Array.prototype.includes: 배열에 값이 포함되어 있는지 확인.
[1, 2, 3].includes(2); // true
- 지수 연산자: 숫자의 제곱 연산.
const square = 3 ** 2; // 9
- Array.prototype.includes: 배열에 값이 포함되어 있는지 확인.
ES8 (2017, ECMAScript 2017)
- 주요 내용:
- async/await: 비동기 코드를 동기식처럼 작성 가능.
async function fetchData() { const response = await fetch("url"); return response.json(); }
- Object.entries/Object.values: 객체의 값을 배열로 변환.
const obj = { a: 1, b: 2 }; Object.entries(obj); // [["a", 1], ["b", 2]]
- async/await: 비동기 코드를 동기식처럼 작성 가능.
ES9 (2018, ECMAScript 2018)
- 주요 내용:
- Rest/Spread 연산자 확장: 객체에서도 사용 가능.
- 비동기 이터레이터: 비동기 반복문 지원.
for await (let x of asyncIterable) { console.log(x); }
ES10 (2019, ECMAScript 2019)
- 주요 내용:
- Array.prototype.flat: 중첩 배열을 평탄화.
[1, [2, [3]]].flat(2); // [1, 2, 3]
- Object.fromEntries: 키-값 쌍 배열을 객체로 변환.
Object.fromEntries([["a", 1], ["b", 2]]); // { a: 1, b: 2 }
- Array.prototype.flat: 중첩 배열을 평탄화.
3. 최신 ECMAScript 기능
- ES11 (2020): Optional Chaining, Nullish Coalescing Operator
- ES12 (2021): String.prototype.replaceAll, 논블로킹 Promise.
- ES13 (2022): 최적화된 배열 메서드.
- ES14 (2023): 정렬 알고리즘 개선.
11. 브라우저 지원과 폴리필
- 최신 ECMAScript 기능은 모든 브라우저에서 지원하지 않을 수 있음.
- 폴리필(Polyfill) 및 Babel 같은 트랜스파일러를 사용해 호환성 확보.
'JavaScript' 카테고리의 다른 글
자바스크립트 비동기 (1) | 2025.02.03 |
---|---|
변수 선언 (0) | 2025.01.02 |
JavaScript 실행 방법 (1) | 2024.12.31 |
JavaScript의 역사 (0) | 2024.12.31 |
자바스크립트란? (0) | 2024.12.31 |