[WIL] Javascript ES?, ES5? ES6?

_sqrlkoo·2022년 7월 24일
0

* ES란? ES의 탄생 배경

브라우저 전쟁 시절 넷 스케이프 사의 자바스크립트가 부러웠는지 사용자를 더 끌어내기 위해 MS의 IE 3에도 JScript라는 이름으로 자바스크립트를 탑재하였다.

하지만 둘의 내용이 너무 달라서 같은 기능을 구현하기 위해 개발자가 하는 일들이 더 많아졌다.

날이 가면 갈 수록 사용자를 끌어내가 위해 서로 기능을 넣다보니 Javascript 와 JScript는 날이 갈 수록 서로 달라지는 경향을 보였고, 이에 심각성을 파악한 European Computer Manufacturers Association(ECMA, 현 ECMA International)에서는 이러한 자바스크립트에 대한 표준을 내리게 됩니다.

또한 ECMA에서는 자바스크립트의 표준만 내리는 게 아니라 다른 표준안도 정하기 때문에 그와 구분하기 위해 숫자를 붙였는데 262다.

즉, ECMA262는 자바스크립트 표준 규격이구나라고 생각하면 될 것 같다.

현재 우리가 ES라고 부르는 것은 ECMA Script의 약자이며, ES5는 ECMA Script 5의 규격을 따른다고 생각하면 된다.

* ES5 (2009)

기본적으로 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은 자바스크립트의 객체 리터럴과 생긴 건 유사한데 다음과 같은 차이점이 존재한다.

  • 키는 무조건 쌍따옴표(“”)로 감싼 문자열이어야한다.
    주석은 사용할 수 없다.
    프로퍼티로 메소드는 불가능하다.

* ES2015(ES6)

ES2015와 ES6는 같은 버전이다.

추가된 기능은 다음과 같다.

  • 호이스팅이 사라진 것 같은 효과

  • 함수 단위 스코프에서 블록 단위 스코프로 변경

  • 콜백 지옥의 구원자, Promise

  • Default, Rest 파라미터

  • 해체 할당, Spread 연산자

0개의 댓글