Ming's develop story

2주차 - JavaScript의 ES란?, ES5/ES6 문법 차이 본문

스파르타코딩클럽 - 항해99/항해 WIL

2주차 - JavaScript의 ES란?, ES5/ES6 문법 차이

Ming 2021. 11. 15. 22:17

ES의 탄생 배경

브라우저 전쟁 시절 개발자들은 몸살을 앓았다.
넷 스케이프 사의 자바스크립트가 부러웠는지 사용자 층을 더 끌어내기 위해 MS의 IE 3에도 JScript라는 이름으로 자바스크립트를 탑재하였다.
하지만 둘의 내용이 매우 달랐는지, 같은 기능을 구현하기 위해 개발자가 해야하는 일들이 더 많아졌다.
날이 가면 갈 수록 사용자를 끌어내기 위해 서로 기능을 넣다보니 Javascript와 JScript는 날이 가면 갈 수록 달라지는 경향을 보였다.
이에 대한 심각성을 파악하고, European Computer Manufacturers Association(ECMA, 현 ECMA International)에서는
이러한 자바스크립트에 대한 표준을 내리게 된다.
또한 ECMA에서는 자바스크립트의 표준만 내리는 게 아니라 다른 표준안도 정하기 때문에 그와 구분하기 위해 숫자를 붙였는데 262다.
ECMA262라고 보인다면 아, 자바스크립트 표준 규격이구나라고 생각하면 될 것 같다.

 

요약

 

ES란 ECMA Script의 약자이다.

 

JavaScript와 ECMA Script

둘 다 뒤에 Script라는 키워드가 붙지만, 자바스크립트는 언어이고, ECMA 스크립트는 규격, 표준 즉, 스펙을 말한다.

 

 

 

ES5와 ES6의 차이점

 

ES5 (2009)

4는 너무 급변하는 내용이 있었던지 거절되고, 그 후에 점진적인 개선을 하고자 5가 나왔다고 한다.
기본적으로 IE9부터 본격적인 지원을 하지만 es5-shim을 사용하면 하위 버전에서도 특정 기능들을 지원해준다.
5부터는 아래와 같은 내용들이 추가되었다.

  • 배열
    배열과 관련해서 새로운 메소드들이 많이 생겼는데 대표적으로
    forEach, map, filter, reduce, some, every와 같은 순환 메소드들이 생겼다.
    이 메소드들은 개발자가 반복 횟수나 조건을 잘못 입력하는 등의 실수를 줄여주는 효과가 있다.
  • 객체
    일단 눈에 띄는 점은 객체의 프로퍼티에 대한 설정을 할 수 있다는 것이다.
    객체를 생성/수정/복사하는 표준 메소드들(Object.create(), Object.defineProperty(), Object.freeze(), Object.assign() 등등)과 getter/setter 등등
    또한 Object.keys 메소드를 쓰면 for in 메소드도 대체할 수 있게 된다.
  • strict 모드
    문법을 좀 더 깐깐하게 체크하는 모드이다.
    물론 이유없이 그러는 게 아니라 좀 더 코드를 안전하게(에러가 안 나게, 미연에 방지하고자) 등장했다.
    특징은 아래 링크를 통해 확인해보자.
    Strict mode - JavaScript | MDN
  • bind() 메소드
    this를 강제로 bind 시켜주는 메소드이다.
  • 실행 컨텍스트 내에 존재하는 Lexical Environment
  • JSON(JavaScript Object Notation)
    과거 통신을 할 때 데이터를 XML 형태로 많이 주고 받았다.
    하지만 JSON이 좀 더 경량화 돼있는지 요새는 JSON이 대세다.
    JSON은 자바스크립트의 객체 리터럴과 생긴 건 유사한데 다음과 같은 차이점이 존재한다.
  1. 키는 무조건 쌍따옴표(“”)로 감싼 문자열이어야한다.
  2. 주석은 사용할 수 없다.
  3. 프로퍼티로 메소드는 불가능하다.
  4. 프로퍼티에서도 메소드의 사용이 불가능하다.
    통신을 위해 Object를 JSON으로 바꾸는 방법은 JSON.stringify(obj)이고, 자바스크립트 코드에서 사용하기 위해 JSON은 Object로 바꾸는 방법은 JSON.parse(json)이다.

ES2015(ES6)

원래는 ES6였는데 사람들이 끝자리인 6과 2016년을 연관짓는 습성 때문에 2016년에 나온 걸로 착각을 해서 ES2015로 바꾸었다고 한다.
ES6 Harmony라고도 불리우는 것 같다.
ES2015 들어서면서 다음과 같은 문제점들이 해결되었다.

Comments