브라우저 전쟁 시절 넷 스케이프 사의 자바스크립트가 부러웠는지 사용자를 더 끌어내기 위해 MS의 IE 3에도 JScript라는 이름으로 자바스크립트를 탑재하였다.
하지만 둘의 내용이 너무 달라서 같은 기능을 구현하기 위해 개발자가 하는 일들이 더 많아졌다.
날이 가면 갈 수록 사용자를 끌어내가 위해 서로 기능을 넣다보니 Javascript 와 JScript는 날이 갈 수록 서로 달라지는 경향을 보였고, 이에 심각성을 파악한 European Computer Manufacturers Association(ECMA, 현 ECMA International)에서는 이러한 자바스크립트에 대한 표준을 내리게 됩니다.
또한 ECMA에서는 자바스크립트의 표준만 내리는 게 아니라 다른 표준안도 정하기 때문에 그와 구분하기 위해 숫자를 붙였는데 262다.
즉, ECMA262는 자바스크립트 표준 규격이구나라고 생각하면 될 것 같다.
현재 우리가 ES라고 부르는 것은 ECMA Script의 약자이며, ES5는 ECMA Script 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은 자바스크립트의 객체 리터럴과 생긴 건 유사한데 다음과 같은 차이점이 존재한다.
키는 무조건 쌍따옴표(“”)로 감싼 문자열이어야한다.
주석은 사용할 수 없다.
프로퍼티로 메소드는 불가능하다.
ES2015와 ES6는 같은 버전이다.
추가된 기능은 다음과 같다.
호이스팅이 사라진 것 같은 효과
함수 단위 스코프에서 블록 단위 스코프로 변경
콜백 지옥의 구원자, Promise
Default, Rest 파라미터
해체 할당, Spread 연산자