WIL | ECMAScript

isthis·2021년 11월 14일
0
post-thumbnail

항해 2주차

항해 2주 차 알고리즘 주간이 끝났다.
토요일에 알고리즘 테스트를 봤는데 문제에서 마련된 테스크 케이스 3개에 대해선 정상 동작했으니 실전에서도 다 통과하길 바란다..!
그리고 이번 주에는 마지막으로 ES에 대해 알아보았는데, 그 내용들을 정리해 보았다.

ES가 무엇일까?

ES란 ECMAScript의 약어이다. 그러면 ECMAScript는 뭘까.

ECMAScript의 탄생
자바스크립트는 1990년대 Netscape 회사의 Brendan Eich 라는 사람에 의해 개발되었다. 자바스크립트가 잘 되자, MS에서 Jscript라는 언어를 개발해 IE에 탑재하였는데, 이 두 스크립트가 너무 제각각이라, 표준이 필요하게 되었다.
표준을 위해 자바스크립트를 ECMA라는 비영리 표준 기관에 제출하였고, 그렇게 제작된 표준이 ECMAScript다.

따라서, 자바스크립트는 프로그래밍 언어이고,
ECMAScript(ES)는 자바스크립트의 표준, 규격이라 보면 된다.

이 즈음에서 헷갈리는 부분이 생긴다. 사람들이 Javascript를 말할 때, 그냥 ES5, ES6 이런 식으로 말을 한다. 마치, ECMAScript가 Javacript 그 자체인 것처럼 말이다.
이 부분에 대한 해답을 Learning Javascrip라는 책에서 인용해 보았다.

"ECMA명세에서 정의한 언어인 ECMAScrip와 자바스크립트의 관계는 다분히 학술적입니다. 기술적으로 말한다면 자바스크립트는 ECMAScript 명세를 구현한 것이지만, 현실적으로 자바스크립트와 ECMAScript는 같은 것이라 생각해도 무방합니다."
출처 Learning Javascript

간단히 생각해, ECMAScript가 결국 (표준화된)자바스크립트다.라고 생각하면 된다.

ES6

ES6는 2015년 6월에 발행되었다. 발행되기 전 이 프로젝트의 이름은 하모니였다. 그래서 'Harmony', 'ES6 Harmony', 'ES2015', 'ECMAScript 2015', 'ES6' 등 다양한 이름이 있지만, 'ES2015'와 'ES6'라는 이름이 널리 쓰이고 있다.

ES6는 ES5와 그 이하 버전에서 문제가 됐던 많은 부분들을 해결하였고, 유용한 기능들도 많이 추가되었다. 그에 따라, 가독성과 유지 보수성이 향상되었고 현재 가장 주요한 버전으로 사용되고 있다.

버전별 차이점

가장 널리 쓰인 ES5와 ES6를 위주로 간단히 정리해 보자.

  • ES3(1999)
    • 흔히 말하는 자바스크립트
  • ES5(2009)
    • 배열에 forEach, map, filter, reduce, some과 같은 메소드 지원
    • Object에 getter, setter 지원
    • JSON 지원
    • 자바스크립트 strict 모드 지원
  • ES6(ES 2015)
    • let, const 키워드 추가 - 변수를 선언할 때 함수 스코프를 가진 var키워드를 대체하기 위해 여타 언어와 똑같이 블럭 스코프를 가진 let, const 키워드 추가
    • arrow 문법 지원 - 편하고 간결하고 this 바인딩을 하지 않는 화살표 함수 추가
    • iterator, generator 추가
    • module import, export 키워드 추가 - 모듈을 임포트 받거나, 모듈을 내보낼 수 있도록 import, export 키워드 추가
    • Promise (비동기 프로그래밍) 도입 -그 동안 콜백지옥에서 고통받던 개발자들을 위해 비동기 처리하는 객체 추가
    • Classes
    • Template Literals(템플릿 리터럴)
    • Array and object destructing(배열 및 객체 비구조화)
    • Default parameters(기본 매개 변수)
    • Rest parameters and Spread operator(나머지 매개 변수 및 확산 연산자)
  • ES7(ECMA 2016)
  • ES8(ECMA 2017)
    • Async Functions(async - await) 도입 - Promise와 같이 비동기 처리를 위한 키워드로, Promise보다 간결하고 직관적이다.
  • ES9(ECMA2018)
  • ES10(ECMA2019)
  • ES11(ECMA2020)
  • ES12(ECMA2021)

마치며

공부할 것이 많다,,

참고자료
kimhscom
gunlog
sjk5766

profile
공부

0개의 댓글