TIL 9/7 ECMAScript

2327 단어 jsTILTIL

ECMAScript

ECMAScript는 자바스크립트의 표준화를 위해서 만들어진 스크립트 언어다. ECMA-262라고도 불리는데 1997년부터 지금까지 매년은 아니더라도 6월달에 개정사항들을 정리해서 개선되어왔다. 2021년에 12번째 ECMAScript가 만들어졌다. ECMAScript가 나오기 전에 각 브라우저 회사마다 동작하는 기능이 통일되지 못한 부분으로 브라우저마다 표시할 수 있는 페이지가 다른 크로스 브라우징 이슈가 생기면서 표준화가 필요하다는 요구에 맞춰서 ECMAScript가 만들어지게 되었다. 이렇게 ECMAScript는 모든 브라우저들이 지켜야하는 약속과도 같아서 개정된 내용들을 해당 브라우저에서 표현될 수 있게 기능들을 구현한다.

ECMAScript 버전 별 특징

버전                    출시년도   특징
ES1                     1997    초판
ES2                     1998    ISO/IEC 16262 국제 표준과 동일한 규격을 적용
ES3                     1999    정규 표현식, try…catch 예외 처리
ES5                     2009    HTML5와 함께 출현한 표준안. 
                                JSON, strict mode, 접근자 프로퍼티(getter, setter), 
                                향상된 배열 조작 기능(forEach, map, filter, reduce, some, every)
ES6 (ECMAScript 2015)	2015	let, const, class, 화살표 함수, 템플릿 리터럴, 디스트럭처링 할당, spread 문법, 
                                rest 파라미터, Symbol, Promise, Map/Set, iterator/generator, 
                                module import/export
ES7 (ECMAScript 2016)	2016	지수(**) 연산자, Array.prototype.includes, String.prototype.includes
ES8 (ECMAScript 2017)	2017	async/await, Object 정적 메소드(Object.values, Object.entries, 
                                Object.getOwnPropertyDescriptors)
ES9 (ECMAScript 2018)	2018	Object Rest/Spread 프로퍼티

이렇게 각각의 버전들에서 특징적인 부분이 드러난다.
여기서 ECMAScript 4는 버전이 없는 것을 볼 수 있다.
4가 예약되어 있었지만 그 제시된 안이 통과되지 못하고 결국은 4는 정해지지 않게 되었다.
그렇게 시간이 흘러 10년뒤 버전5에서 많은 기능이 추가되었다.
이때 지금 사용하는 배열 메소드들이 많이 추가되었다.
그리고 6년 뒤 연도이름을 붙인 버전을 같이 이름 붙이면서 지금 정말 많이 사용하는 선언과 클래스, spread, rest 등등 많은 유용한 기능들이 대거 추가되었다. 이때 문법으로 개발단계가 한층 더 편해졌다고 한다.

ECMAScript 4는 왜?

JavaScript는 원래 디자이너와 프로그래머를 위한 접착제 프로그래밍 언어로 생각되었다. 동적 페이지에 사용할 수 있는 간단한 스크립팅 언어였다. 하지만 점점 웹 페이지에서 더 많은 기능을 원하게 되었고 ECMAScript 4에서는 매우 야심적으로 3에서 누락된 수많은 기능을 넣고 이전의 여러가지 기능을 수정하여 이전버전과 호환이 되지 않게 구성되었다. 이때 많은 논란에 휩싸이게 되었고 결국 포기하게 되었다. 그렇게 2009년에 3.1버전을 5로 이름을 변경하여 업데이트 되었다.

ES4에 추가되려고 했던 기능들에는
Class, Interfaces, Strict typing, Like, New types, triple-quoted strings, Packages, Generic functions ... 의 기능들이 있었다고 한다.
이때 Strict typing에는 타입을 적어야 하는 지금의 TypeScript의 기능도 가지고 있었던 것 같다.

조금 더 이전 기능과 호환이 되게 시간을 두고 계획되어 실행되었다면 지금과는 많이 달라진 모습이지 않았을까 생각했다.

좋은 웹페이지 즐겨찾기