Javascript의 ES란? ES5와 ES6의 차이점

0

W.I.L(Weekly I Leaned)

목록 보기
3/8

Javacript의 ES란 무엇인가?

Javascript는 원래 넷스케이프에서 시작된 언어인데, 프로그래밍 언어들의 근간이라고 볼 수 있는 C언어보다 훨씬 나중에 개발된 언어이다. 자세한 역사는 해당 링크를 통해 가보면 될 것이다. -> 'Javacript란?'

결과부터 말하면 ES라는 것은 'Javascript의 표준 규격'을 의미하는데, 이것이 탄생한 배경에는 '브라우저 전쟁'이라고 하는 웹 브라우저 시장에서의 점유율 싸움이 있었다. 넷스케이프 사에서 개발한 Javascript가 선풍적인 인기를 끌기 시작하자 마이크로소프트 사에서도 IE 3(우리가 알고있는 인터넷 익스플로러)에 JScript라는 이름으로 자바스크립트를 탑재했지만, 실제적으로는 둘의 내용이 매우 달라서 같은 기능을 구현하더라도 개발자들이 해야할 일과 시간이 훨씬 늘어나게 되었다.

실제로 서로 사용자를 끌어들이기 위해 이것저것 기능을 추가하다 보니 Javascript와 JScript는 점점 다 달라지는 경향을 보였고, 이에 보다못한 European Computer Manufacturers Association (ECMA, 현 ECMA International)에서 Javascript에 대한 표준을 정하게 되었다.

또, ECMA에서는 Javascript의 표준만 정하는게 아닌 다른 표준안도 정하기 때문에 그것들과 구분하기 위해 숫자를 붙였고 이것이 262가 되었다. 즉, ECMA 262는 자바스크립트의 표준 규격이라고 생각하면 된다. 현재 우리가 ES라고 부르는 것은 ECMA Script의 약자이며, ES5는 ECMA Script 5의 규격을 따른다고 생각하면 된다.

(ECMA가 다루는 표준으로, 262가 붙은 ECMA스크립트 언어 규격이 우리가 흔히 부르는 Javascript이다.)

ES5? ES6? 이것들이 다 뭐야?

우리가 사용하는 언어들(영어, 한국어, 일본어, 중국어 등등..)이 시간이 지나면서 발전하고 변형하듯이, 프로그래밍 언어들도 기존의 취약한 점들은 보완하고 필요한 기능들을 추가하면서 발전해 나가고 있다. ES도 마찬가지로 Javascript를 발전시키기 위해서 기능 추가나 변경점을 추가한 버전업이라고 생각하면 된다. (해당 차이가 무엇인지 이번 포스트에서는 간단하게 알아본다.)

ES3 (1999)

우리가 Javascript라고 하는 언어는 1997년 6월 표준화된 이후 2년이 지난 이 시점에 표준화된 언어라 할 수 있다.

ES5 (2009)

자료를 찾아보다 특이한 점을 발견했는데, 원래 ECMA-262에는 ES4 판이 존재했었다. 하지만 언어에 관련된 정치적인 차이로 인해서 버려졌다고 한다. 이 중 일부가 ES5을 이루는 기본이 되었다.

  1. 배열에 forEach, map, filter, reduce, some, every와 같은 메소드들이 지원되었다.
  2. Object에 대한 getter와 setter가 지원되었다.
  3. Javascript strict모드가 지원되었다. (기존에 비해서 더 엄격하게 문법 검사를 진행한다.)
  4. json 형식의 자료들을 지원한다. 과거에는 XML이라는 규격을 사용했다가, json이 인기를 끌면서 javascript 역시 지원을 하게 되었다.

ES6 (ES 2015)

이 버전은 ES6라고도 하고 ES2015라고도 하는데, 두개가 같은 버전이고 불리는 이름만 다르다. 이유는 뒤에 버전 숫자(3,4,5,6 등등)만 붙이면 갱신되는 ES의 발행의 진행이 보기 어렵다는 이유때문이다. 원래 ES는 몇년에 한 번씩 발표가 되었지만, ES5이후부터는 빠르게 변화하는 웹 생태계 때문에 1년에 한번씩은 갱신을 하자는 움직임들이 생겨나게 되었고, 이로 인해 단순한 숫자를 붙이기 보다는 갱신된 연도를 붙여서 새로운 이름을 만들자는 의견들이 생겨나게 되었다.
(그리고 이때 엄청나게 많은 추가점이 생겼다...)

  1. Hoisting을 개선했다.
    기존에는 var키워드를 사용하여 호이스팅이 빈번하게 일어났는데 이를 방지하기 위해 블록 스코프를 가진 let과 const를 추가했다.
  2. 화살표 문법을 지원한다.
    장점 : 코드의 간결화, this를 바인딩하지 않는다. (예시 링크)
  3. iterator와 generator 추가.
  4. module의 import/export 추가.
  5. Promise 도입
    자바스크립트는 비동기적 언어이기 때문에 callback에 대한 이슈가 많았으나 이부분을 해결할 수 있는 문법을 제공한다.
profile
우주와 같은 프로그래밍 세상

0개의 댓글