ECMAScript
ECMAScript는 자바스크립트의 표준 규격으로, Ecma International이 ECMA-262 기술 규격을 통해 정의한 스크립트 프로그래밍 언어이다.
1997년 처음 표준화되었으며, 자바스크립트의 핵심 문법과 기능을 규정한다.
ECMAScript는 ECMA 인터내셔널(ECMA International)에서 제정한 스크립트 프로그래밍 언어의 표준 사양이다.
이 표준은 다양한 스크립트 언어의 상호 운용성을 보장하기 위해 만들어졌으며, JavaScript, JScript, ActionScript 등이 ECMAScript 표준을 준수한다.
ECMAScript는 1997년에 첫 번째 버전이 발표된 이후 지속적으로 발전해 왔다.
주요 버전으로는 2015년에 발표된 ECMAScript 6(ES6), 2016년의 ECMAScript 2016(ES7), 2017년의 ECMAScript 2017(ES8) 등이 있으며, 각 버전마다 새로운 기능과 개선 사항이 추가되었다.
ECMAScript는 주로 웹 브라우저에서 클라이언트 측 스크립트로 사용되지만, Node.js와 같은 런타임 환경을 통해 서버 측 애플리케이션 개발에도 널리 활용되고 있다.
ECMAScript와 JavaScript의 관계를 이해하기 위해, ECMAScript는 스크립트 언어의 표준 사양이며, JavaScript는 이 표준을 준수하여 구현된 프로그래밍 언어라고 할 수 있다. 즉, ECMAScript는 언어의 규칙과 지침을 정의하고, JavaScript는 이를 기반으로 실제로 사용되는 언어이다.
핵심 특징
- 표준화: 브라우저 간 호환성을 유지하며 자바스크립트의 동작을 통일한다.
- 확장성: 매년 새로운 기능(예: 비동기 처리, 모듈 시스템)이 추가된다.
- 하위 호환성: 기존 코드와의 호환성 유지.
주요 버전별 변화
ECMAScript는 자바스크립트의 표준 규격으로, 1997년 첫 버전(ES1) 출시 이후 연간 업데이트를 통해 현대 웹 개발의 핵심 기술로 발전했다.
ES5 (2009)
- 엄격 모드:
'use strict'
로 안전한 코드 작성 가능 - JSON 표준화:
JSON.parse()
/JSON.stringify()
추가 - 배열 메서드:
forEach()
,map()
,filter()
등 함수형 프로그래밍 지원
ES6 (ECMAScript 2015)
자바스크립트 역사상 가장 혁신적인 업데이트로 평가된다.
- 변수 선언: 블록 스코프
let
/const
도입 - 화살표 함수:
(a, b) => a + b
형태로 간결한 표현 - 템플릿 리터럴: 백틱(
`
)과${}
로 문자열 보간 - 클래스:
class
키워드로 OOP 구현 - 모듈 시스템:
import
/export
로 코드 분리
ES2016~ES2022
ES2016 (ES7)
- 지수 연산자:
2 ** 3
→ 8 - Array.includes(): 요소 존재 여부 확인
ES2017 (ES8)
- async/await: 비동기 코드 동기식 작성
- Object.values(): 객체 값 배열 반환
ES2020 (ES11)
- 옵셔널 체이닝:
obj?.prop
- 널 병합 연산자:
??
로 기본값 설정
ES2021 (ES12)
- String.replaceAll(): 전체 문자열 치환
- 논리 할당 연산자:
&&=
,||=
ES2023 (ES14)
- 배열 검색 메서드:
findLast()
,findLastIndex()
[4][7] - 불변 배열 메서드:
toReversed()
,with()
로 원본 보존[4][7] - Hashbang 문법:
#!/usr/bin/env node
지원[4][7]
버전별 비교 표
버전 | 대표 기능 | 개발 영향도 |
---|---|---|
ES5 | Strict Mode, JSON | 표준화 기반 마련 |
ES6 | let/const, 모듈 시스템 | 현대 웹 개발 패러다임 전환 |
ES2020 | 옵셔널 체이닝 | Null 안정성 강화 |
ES2023 | 불변 배열 메서드 | 함수형 프로그래밍 지원 |
ECMAScript와 자바스크립트의 관계
- ECMAScript: 자바스크립트의 핵심 규격으로, 언어의 기본 구조를 정의.
- 자바스크립트: ECMAScript를 기반으로 클라이언트 측 Web API(DOM, BOM 등)를 확장한 구현체.
실무 적용 시 고려사항
- 크로스 브라우징: 브라우저별 지원 범위 차이로 Babel 같은 트랜스파일러 활용 필요.
- 모던 자바스크립트: ES6+ 기능 사용 시 코드 가독성과 유지보수성 향상.