EcmaScript

EcmaScript(ES)란?

넷스케이프 사는 웹 페이지 동작을 향상시키는 자바스크립트를 지원하기 시작하고 자바스크립트가 사용자 층에서 성공을 거두자 MS에서도 IE3에 Jscript를 개발하여 탑재 하였다.
이 때부터 브라우저 전쟁(1990년대 후반에 MS의 인터넷 IE와 넷스케이프 두 브라우저간 경쟁)이라고 불리는 시기가 시작된다.
같은 기능이지만 둘의 기능 구현이 다르기 때문에 개발자들은 브라우저 호환성을 맞추기 위해 같은 기능을 구현할려면 둘 다 동작을 고려하기 위해 코드량이 늘어날수 밖에 없었다.
이렇게 날이 가면 갈 수록 사용자를 끌어내기 위해 브라우저 벤더들간의 서로 특화된 기능을 넣다보니 JavaScript와 Jscript는 시간이 지날수록 달라지는 경향을 보였다.
이에 심각성을 파악하고 ECMA International(European Computer Manufacturers Association) 표준 기구에서 브라우저에 사용되는 자바스크립트 부분만 표준을 정의하게 된다.
또한 ECMA에서는 자바스크립트 표준 외에도 다른 표준안도 정하기 때문에 그와 구분짓기 위해 숫자 넘버링을 붙였는데 자바스크립트는 ECMA-262로 표준 정의 하였다.
그렇기에 자바스크립트 명칭은 JavaScript가 아니라 ECMAScript 라고 표현해야 정확한 표현일 것이다.
현재 대부분 사용하고있는 자바스크립트는 ES3이며, ES4는 논쟁요소가 많아 중도 폐기 되었으며 ES5부터 먼저 재정의 되었다.

ES3 (1999)

대중적으로 많이 사용되는 자바스크립트가 ES3라고 생각해도 무관하다.

  • 함수 단위의 스코프, 호이스팅, 모듈화 미지원 프로토타입 클로저 등등 자바스크립트의 기본적인 특징들이 정의되어 있다.

ES5 (2009)

ES4는 자바스크립트가 아닌 완전히 다른 언어인데다 보안 이슈에도 안전하지 않아서 인지 표준안에서 거절되고, 그 이후 점진적으로 개선을 하고자 ES5가 나왔다.
기본적으로 IE9부터 본격적인 지원을 하지만 es5-shim을 사용하면 하위 버전에서도 특정 기능들을 지원해준다.

  • 배열 표준 메소드
    배열과 관련해서 새로운 메소드들이 많이 생겼는데 대표적으로 forEach, map, reduce, some, every와 같은 순환 메소들이 생겼다.
    이 메소드들은 개발자가 반복 횟수나 조건을 잘못 입력하는 등의 실수를 줄여주는 효과가 있다.
  • 객체 표준 메소드
    객체의 프로퍼티에 대한 설정을 할 수 있다. 해당 프로퍼티를 열거 불가(순환 로그창 등등), 읽기 전용, 설정 변경 불가, getter, setter 등을 설정 사항들을 직접 지정 가능하다.
    또한 Objectkeys 메소드를 사용하면 for in 메소드를 대체할 수 있게 된다.
  • strict 모드
    문법을 좀 더 깐깐하게 체크하는 모드이다. 좀 더 코드를 안전하게(에러가 안나게, 미연에 방지) 등장했다.

ES2015(ES6)

원래 명칭은 ES6이지만 사용자들이 끝자리인 6과 2016년을 연관짓거나 착각해서인지 정식 명칭이 ES2015로 바뀌었다.
그렇기에 ES6나 ES2015는 같은 뜻이며 또는 ES6 Harmony라고도 불린다.

  • 호이스팅이 사라진것 같은 효과
  • 함수 단위 스코프에서 블록 단위 스코프로 변경
  • this를 종적으로 바인딩하지 않은 Arrow Function
  • 모듈화 지원
  • 비동기 콜백 패턴 가독성 개선, Promise
  • Default, Reset 파라미터
  • 해체할당, Spread 연산자
  • 템플릿 리터럴
  • 클래스
    이 외에도 특징은 많이 생겨났고 현재는 브라우저(IE)에서 지원해주지 않는 경우가 많아 Babal이라는 트랜스파일러를 사용하거나 바벨 웹 사이트 REPL에서 즉시 변환해서 사용할 수 한다.

ES2015+

현재 ES2016이 작년 6월 경에 발표되었다.
ES2017은 조만간 발표될 예정이며 ES2015에서 너무 내용이 많이 바뀌어 런닝커브가 조금 높아졌다면 여기서부터는 크게 걱정할 필요가 없는게 그렇게 큰 내용이 변하지 않았다는 점이다.
3에서 5까지 10년, 5에서 6까지 7년이라는 공백 때문에 엄청난 변화들이 있거나 했는데 이제는 매년 표준을 재정하면서 그런 혼란을 줄일 예정인 듯 하다.
또한 이후에 나올 ES를 통칭해서 ES.Next라도고 표현 한다.

참조

공유하기