ECMAScript
ECMAScript
ECMAS는 자바스크트(JavaScript) 언의 표준화된 사양ification)으로, 브라우저 및 다양한 환경에서 자바스크립트가 어떻게작해야 하는지를의하는 공식적인 기준입니다. ECMAScript는 ECMA International이라는 국제 표화 기구에서리하며, 이 표준을 바탕으로 브라우저 제작사, 개발자, 프레임워크 개발자들이 일관된 방식으로 자바스크립트를 구현하고 사용할 수 있습니다.
자바스크립트는 Netscape에서 개발한 스크립트 언어로, 초기에는 Netscape Navigator에 탑재되어 웹 페이지의 동적 기능을 구현하는 데 사용되었습니다. 이후 이 언어의 표준화 필요성이 대두되어 1996년에 ECMA-262라는 표준 문서로 제정되었으며, 그 결과물이 바로 ECMAScript입니다.
개요
ECMAScript는 자바스크립트의 핵심 언어 기능을 규정하는 표준으로, 문법, 데이터 타입, 객체, 함수, 제어 구조 등을 포함합니다. 자바스크립트 엔진(예: V8, SpiderMonkey, JavaScriptCore)은 이 표준을 바탕으로 자바스크립트 코드를 해석하고 실행합니다.
ECMAScript는 정기적으로 새로운 버전이 발표되며, 각 버전은 새로운 기능과 개선 사항을 포함합니다. 특히 2015년에 발표된 ECMAScript 2015(ES6)는 언어의 근본적인 변화를 가져와 현대 자바스크립트 개발의 기준이 되었습니다.
주요 버전 및 발전 역사
ECMAScript는 연도 기반으로 버전이 명명되며, 주요 버전은 다음과 같습니다.
ECMAScript 1 ~ 5
- ES1 (1997): 첫 번째 공식 표준. 기본적인 언어 구조를 정의.
- ES3 (1999): 정규표현식, 예외 처리 등 중요한 기능 추가. 오랫동안 널리 사용됨.
- ES5 (2009):
"use strict"모드, 배열 메서드(map,filter등), JSON 지원 추가. 이전 버전과의 호환성을 유지하며 광범위하게 채택됨.
ECMAScript 2015 (ES6)
2015년에 발표된 ES6는 자바스크립트의 가장 큰 진화 중 하나로 평가됩니다. 주요 기능으로는:
[let](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%B3%80%EC%88%98%20%EC%84%A0%EC%96%B8/let)과[const](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%B3%80%EC%88%98%20%EC%84%A0%EC%96%B8/const): 블록 스코프 변수 선언- 화살표 함수(Arrow Functions):
() => {}문법 - 클래스(Classes):
class키워드를 통한 객체지향 문법 - 모듈(Modules):
import/export를 통한 모듈 시스템 - 템플릿 리터럴(Template Literals): 백틱(javascript // ES2015+ 예시 const greet = (name) =>
)을 사용한 문자열 보간 - **비구조화 할당**(Destructuring): 배열 및 객체의 값을 쉽게 추출 - **프라미스**(Promises): 비동기 프로그래밍 개선 - **모듈화된 표준 라이브러리**: `Map`, `Set`, `Promise`, `Symbol` 등 ES6 이후부터는 매년 새로운 기능이 추가되는 **연례 릴리스 모델**(Annual Release Model)이 도입되었습니다. ### ECMAScript 2016 이후 2016년부터는 매년 새로운 기능이 포함된 버전이 출시됩니다. 주요 예시: | 연도 | 주요 기능 | |------|----------| | 2016 | 지수 연산자 (`**`), `Array.prototype.includes()` | | 2017 | `async`/`await`, `Object.values()`/`Object.entries()` | | 2018 | 비동기 이터레이션, 스프레드 문법 객체에 적용 | | 2019 | `Array.prototype.flat()`, `Object.fromEntries()`, `try...catch` 바인딩 생략 | | 2020 | `Promise.allSettled()`, `globalThis`, Optional Chaining (`?.`) | | 2021 | `String.prototype.replaceAll()`, `WeakRefs`, 논리 할당 연산자 (`??=`) | | 2022 | `Top-level await`, `Class fields`, `Error Cause` | | 2023 | `Array.prototype.findLast()`, `Hashbang Grammar` | --- ## ECMAScript와 JavaScript의 관계 ECMAScript는 **사양**(specification)이며, JavaScript는 그 사양을 구현한 **언어**입니다. 비슷한 관계로 HTML과 브라우저의 관계를 들 수 있습니다. 즉: - **ECMAScript**: "이렇게 동작해야 한다"는 규칙 - **JavaScript**: 그 규칙을 따르는 실제 언어 다른 언어들도 ECMAScript 사양을 기반으로 하여 개발되었습니다. 예를 들어, ActionScript(Adobe Flash)나 JScript(Microsoft)는 초기에 ECMAScript를 참고하여 만들어졌습니다. --- ## 표준화 과정 ECMAScript 표준은 **TC39**(Technical Committee 39)라는 위원회가 주도합니다. TC39는 주요 브라우저 엔진 개발사(구글, 애플, 마이크로소프트, 모질라 등)와 언어 설계자들로 구성되어 있으며, 새로운 기능 도입을 위한 다단계 제안 프로세스를 운영합니다. ### 제안 단계 (Stages) 1. **Stage 0 (Strawman)**: 아이디어 제안 2. **Stage 1 (Proposal)**: 공식적으로 검토 시작 3. **Stage 2 (Draft)**: 사양 초안 작성 4. **Stage 3 (Candidate)**: 구현 및 피드백 수집 5. **Stage 4 (Finished)**: 다음 버전에 포함 확정 Stage 4에 도달한 기능만이 다음 연도의 ECMAScript 표준에 포함됩니다. --- ## 활용 환경 ECMAScript는 단순히 웹 브라우저에 국한되지 않습니다. Node.js, Deno, React Native, Electron 등 다양한 플랫폼에서 자바스크립트 엔진을 통해 실행되며, 이 모든 환경은 ECMAScript 사양을 기반으로 합니다. 또한, **Babel** 같은 트랜스파일러는 최신 ECMAScript 기능을 사용하되, 구형 브라우저에서도 실행할 수 있도록 이전 버전의 자바스크립트로 변환해줍니다.Hello, ${name}!; class Person { constructor(name) { this.name = name; } sayHello() { return greet(this.name); } } ```
참고 자료 및 관련 문서
ECMAScript는 웹 개발의 핵심 기반 기술로서, 지속적인 발전을 통해 개발자의 생산성과 코드의 안정성을 높이고 있습니다. 최신 기능을 적절히 활용하면 보다 간결하고 유지보수하기 쉬운 코드를 작성할 수 있습니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.