2 자바스크립트란?
source: categories/study/javascript-deep-dive/javascript-deepdive3.md
2.1 자바스크립트의 탄생
1995년, 약 90%의 시장 점유율로 웹 브라우저 시장을 지배하고 있던 넷스케이프 커뮤니케이션즈(Netscape communications)는 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기로 결정한다.
그래서 탄생한 것이 바로 브렌던 아이크(Brendan Eich)가 개발한 자바스크립트다.
자바스크립트는 1996년 3월, 넷스케이프 커뮤니케이션즈의 웹 브라우저인 넷스케이프 내비게이터(Netscape Navigator) 2에 탑재되었고 "모카(Mocha)"로 명명되었다.
그러다 그해 9월 "라이브스크립트(LiveScript)"로 이름이 바뀌었다가 12월에 "자바스크립트(JavaScript)"라는 이름으로 최종 명명되었다.
이렇게 탄생한 자바스크립트는 현재 모든 브라우저의 표준 프로그래밍 언어로 자리잡았다.
그러나 자바스크립트가 순탄하게 성장했던 것은 아니다.
자바스크립트가 탄생한 뒤 얼마 지나지 않아 자바스크립트의 파생 버전인 JScript가 출시되어 자바스크립트는 위기를 맞는다.
2.2 자바스크립트의 표준화
1996년 8월, 마이크로소프트는 자바스크립트의 파생 버전인 "JScript"를 인터넷 익스플로러(Internet Explorer) 3.0에 탑재했다.
그런데 분제는 JScript와 자바스크립트가 표준화되지 못하고 적당히 호환되었다는 것이다.
즉, 넷스케이프 커뮤니케이션즈와 마이크로소프트는 자사 브라우저의 시장 점유율을 높이기 위해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가하기 시작했다는 것이다.
이로 인해 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작했고, 결과적으로 모든 브라우저에서 정상적으로 동작하는 웹페이지를 개발하기가 무척 어려워졌다.
이에 자바스크립트의 파편화를 방지하고 모든 브라우저에서 정상적으로 동작하는 표준화된 자바스크립트의 필요성이 대두되기 시작했다.
이를 위해 1996년 11월, 넷스케이프 커뮤니케이션즈는 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터네셔널에 자바스크립트의 표준화를 요청한다.
1997년 7월, ECMA-262라 불리는 표준화된 자바스크립트 초판(ECMAScript 1) 사양(specification)이 완성되었고, 상표권 문제로 자바스크립트는 ECMAScript로 명명되었다.
이후 1999년 ECMAScript 3(ES3)이 공개되고, 10년 만인 2009년에 출시된 ECMAScript 5(ES5)는 HTML5와 함께 출현한 표준 사양이다.
2015년에 공개된 ECMAScript 6(ECMAScript 2016, ES6)는 let/const
키워드, 화살표 함수, 클래스, 모듈 등과 같이 범용 프로그래밍 언어로서 갖춰야할 기능들을 대거 도입하는 큰 변화가 있었다.
ES6 이후의 버전업은 비교적 작은 기능을 추가하는 수준으로 매년 공개할 것으로 예고되었다.
ECMAScript 버전별 특징은 다음과 같다.
- ES1 (1997): 초판
- ES2 (1998): ISO/IEC 16262 국제 표준과 동일한 규격을 적용
- ES3 (1999): 정규 표현식,
try ... catch
- ES5 (2009): HTML5와 함께 출현한 표준안.
JSON, strict mode, 접근자 프로퍼티, 프로퍼티 어트리뷰트 제어, 향상된 배열 조작 기능(forEach
,map
,filter
,reduce
,some
,every
) - ES6 (ECMAScript 2015) (2015):
let/const
, 클래스, 화살표 함수, 템플릿 리터럴, 디스트럭쳐링 할당, 스프레드 문법,rest
파라미터, 심벌, 프로미스,Map/Set
, 이터러블,for ... of
, 제너레이터,Proxy
, 모듈import/export
- ES7 (ECMAScript 2016) (2016): 지수(**) 연산자,
Array.prototype.includes
,String.prototype.includes