자바스크립트의 ES(ECMAScript)란? - ES5/ES6

2022. 8. 15. 02:51Front-end/JavaScript

자바스크립트는 언어이고, ES(ECMAScript)는 자바스크립트의 표준 규격을 의미한다.

더보기

ECMAScript 

자바스크립트는 넷스케이프에서 개발했다. 그리고 그에 대항하기 위해 MS에서는 J스크립트를 만들었다. 이처럼 브라우저마다 스크립트 언어가 다르게 때문에 서로 호환이 되지 않고 파편화가 생기기 시작했다. 파편화는 간단히 말해서 똑같은 코드인데 어떤 브라우저에서는 제대로 실행되고 어떤 브라우저에서는 에러가 나는 현상을 의미한다.

 

이런 파편화를 막으려면 표준을 만드는 것이 중요하다. 그래서 넷스케이프는 1996년 11월에 브라우저에서 돌아가는 스크립트 언어를 표준화하기 위해서 Ecma International이라는 국제 표준화 기구에 자바스크립트 기술 규격 제정을 요청했다.

 

Ecma International은 C++, C#, CLI, 파일 구조, JSON 등 다양한 표준을 제정하는 기구로 과거에는 ECMA(European Computer Manufatures Association)이라는 유럽 컴퓨터 제조 협회였지만 지금은 Ecma International로 이름을 바꿔 유럽뿐만 아니라 전 세계적인 표준화 작업을 하는 국제 표준화 기구이다.

 

넷스케이프가 제안한 자바스크립트 기술 규격은 이후 ECMA-262라는 이름으로 표준화 작업이 진행된다. 그리고 1997년 ES1의 발표를 시작으로 현재 ECMAScript 2022까지 발표되었다.

 

자바스크립트는 1995년 넷스케이프 커뮤니케이션즈 코퍼레이션의 브랜든 아이크(Brendan Eich)가 처음에는 모카(Mocha)라는 이름으로, 나중에는 라이브스크립트(LiveScript)라는 이름으로 개발했고 최종적으로 자바스크립트(JavaScript)가 되었다. 자바스크립트는 자바(Java)와 아무런 연관이 없지만 당시 유명했던 자바에 묻어가려는 마케팅적인 이유로 이름이 붙여졌다.

 

자바스크립트는 10일이라는 짧은 기간에 만들어진 언어로 설계에 허점이 있을 수밖에 없다. 정작 자바스크립트를 개발한 당사자도 자바스크립트가 이렇게 흥행할 것이라고는 상상도 못 했다. 그래서 계속 버전이 올라가고 기능이 늘어나면서 1999년 ES3, 2009년 ES5, 2015년에는 ES6가 나왔다. 현재 2022년을 기준으로 표준 규격은 ECMAScript 2022으로 거의 매년 새로운 버전이 나오고 있다. 이중 가장 큰 변화를 가져온 업데이트는 ES5와 ES6이다.

 

ES1 ~ ES3 (1997~1999)

1997년 ES1을 시작으로 1998년 ES2, 1999년 ES3가 발표되었다. ES3에 try/catch 문법이 추가되었으며 함수 단위의 스코프, 호이스팅, 프로토타입, 클로저 등 자바스크립트의 기본적인 특징을 가지고 있다.

 

ES4 (폐기)

이후 ES4 표준 작업이 진행되었지만 언어에 얽힌 정치적인 견해 차이로 ES4 명세는 폐기되었다. ES4를 개발할 당시 ES3.1을 작성하는 그룹과 ES4를 작성하는 그룹이 나뉘었고 그 사이에 갈등이 있었다. 결국 ES3.1이 이겼고, ES4는 폐기됐으며 ES3.1은 추후 ES5가 되었다.

 

 

ES5 (2009)

  1. 배열 메서드 추가 : forEach, map, filter, reduce, some, every
  2. Object에 대한 getter / setter 지원
  3. strict mode 지원 (세심한 문법 검사)
  4. JSON 지원 (XML을 사용하다가 JSON도 지원)
  5. bind() 메서드 추가 (this를 강제로 bind 시키는 메서드)

 

ES6 (2015)

  1. 호이스팅 개선을 위한 블록 스코프를 가진 let, const 키워드 추가
  2. arrow function(화살표 함수) 문법 지원
  3. iterator / generator 추가
  4. module import / export 추가
  5. 콜백 지옥을 해결할 Promise 추가
  6. 함수형 프로그래밍 및 Typescript의 기능 추가

 

ES7 (2016)

  1. 제곱 연산자(**) 추가
  2. Array.includes 추가

 

ES8 (2017)

  1. async / await 추가
  2. String.padStart(), String.padEnd() 메서드 추가
  3. 이후 나오는 ES 표준은 편의상 ES.Next 또는 ECMAScript 2017+라고 부른다
반응형