본문 바로가기
Tech/JS

ES5 vs ES6

by egas 2021. 7. 30.

Javascript에서는 ES5(2009년 12월)와 ES6(2015년)의 차이를 많이 물어보곤한다. 버전 차이에 따른 기능 추가가 가장 뚜렷한 두 버전이기 때문이다. Javascript는 ES6를 기점으로 매년 새로운 버전을 표준으로 반영하고있다. 어떤 변화가 있었는지 알아보자.

 

https://262.ecma-international.org/6.0/

 

ECMAScript 2015 Language Specification – ECMA-262 6th Edition

5.1.1 Context-Free Grammars A context-free grammar consists of a number of productions. Each production has an abstract symbol called a nonterminal as its left-hand side, and a sequence of zero or more nonterminal and terminal symbols as its right-hand sid

262.ecma-international.org

 

오. 엄청 많은 변화가 있었다.. NaN이나 Infinity도 ES6 때 생겼다. Math의 여러 함수들도 추가가 된것이 보인다.

 

아래는 주요 변화 사항들이다.

 

  • let keyword
  • const keyword
  • For/of
  • Map objects (weakMap)
  • Set objects (weakSet)
  • Arrow function 
  • Function Default parameter
  • Function Rest Parameter
  • Template literal
  • Class
  • Module
  • Destructuring assignment
  • Promise
    • ES8(ES2017)에서 async/await이 추가되었다.
  • Iterator / Generator
  • Enhanced Object Literals
  • Symbol
  • Object.assign

Function Rest Parameter

ES6이전에는 실행 컨텍스트 생성 시점에 함께 생성되는 arguments를 주로 사용했다. 지정한 매개변수의 개수와 무관하게 호출 시 전달한 인자가 모두 arguments 정보에 담긴다. 하지만, arguments는 배열이 아닌 유사 배열 객체여서 배열처럼 사용하기위해 따로 처리가 필요했고, 함수 내부에서 매개변수의 값을 바꾸면 arguments의 값도 함께 바뀌었다. 이러한 문제로 ES6에서는 Rest Parameter가 나왔다.

 

 

참고

https://www.w3schools.com/js/js_es6.asp#mark_global_methods

728x90

'Tech > JS' 카테고리의 다른 글

.filter(Boolean)  (0) 2021.07.30
undefined 초기화  (0) 2021.07.30
불변성 Immutability  (0) 2021.07.30
자바스크립트 꼬리물기와 for에 관하여...  (0) 2021.05.28

댓글