ECMAScriptt 6 란 ?
ECMAScript는 자바스크립트의 토대를 구성하는 스크립트 언어 명세이다
Europen Computer Manufacturers Association의 약어
ECMAScript6 에크마 스크립트 식스 라고 읽는다. 약자는 ES6 이에스 식스 라고 읽는다. ES2015 라고도 쓰는데 ES6는 6번째 라는 것이고 ES2015 = ES6 이다.
우리가 현재 사용하고있는 자바스크립트는 ES5이며, 이전에는 ES1 ~ ES3까지 존재하고있다.
ES4는 논쟁요소가 많아 폐기 되었으며 ES5부터 먼저 제정하였고
우리가 현재 사용하고있는 자바스크립트는 ES5이며, 이전에는 ES1 ~ ES3까지 존재하고있다.
ES4는 논쟁요소가 많아 폐기 되었으며 ES5부터 먼저 제정하였고
ECMAScript 6.0( ECMAScript 2015)이 2015년 6월 공표/ 현재 외국의 오픈소스들 중 다수가 ecma6로 개발 (react, angular2등)
ES6 기반으로 애플리케이션을 개발할 경우 BabelJS를 통해 ES5로 컴파일할 수 있고
TypeScript는 ES6를 포함해 별도의 추가 기능을 포함할 수 있다.
* Node.JS v4부터는 ES6를 지원하고 있다.
TypeScript는 ES6를 포함해 별도의 추가 기능을 포함할 수 있다.
* Node.JS v4부터는 ES6를 지원하고 있다.
ECMAScriptt 6 특징
클래스 도입
기존에 프로토타입형식으로 선언하여 사용하던 OOP를 클래스 형태도 지원 할 수 있도록
하지만 근본적으로 자바스크립트가 클래스형식의 OOP를 지원하기 위해 만든 언어는 아니여서 성능적으로 좋지 않고 불안함.
하지만 근본적으로 자바스크립트가 클래스형식의 OOP를 지원하기 위해 만든 언어는 아니여서 성능적으로 좋지 않고 불안함.
좀더 자세한 내용은 아래 링크 참조
블럭 스코프 Let
블락스코프
좀더 자세한 내용은 아래 링크 참조
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/letfor of
- for in은 객체의 프로토타입까지 모두 순회했다면
- es6의 for of는 콜랙션의 유효값만 순회
- Array, Map, Set, String, TypedArray, arguments 를 포함한 모든 iteralbe한 오브젝트에 사용 가능
Arrow function
- this에 대한 번거로움 해소
- 자바8의 람다형식
Default + Rest + Spread
- 기존의 x = x || 3 방식으로 초기화 하던 방식을 미리 초기화 할 수 있게 해줌
- 가변인수를 지원 해줌, arguments로 인자 순회를 할 필요가 없어짐
Destructuring
기존에 아예없던 기능. 패턴매칭을 통해 값을 바인딩 해줌 없으면 undefined.
여러 변수를 한번에 초기화 하는게 가능
여러 변수를 한번에 초기화 하는게 가능
Template Strings
스트링 선언방식이 좀 더 편해짐. 멀티라인 지원 및 탬플릿 제공
Generators
- yield를 단순화 시키기 위해 function의 iterator를 사용 할 수 있도록 함
- yield란 함수 중간에 값을 넘기거나 중지시키는것 (파이썬과 유사)
- yield 키워드는 생성기 함수 (function* 또는 오래된 생성기 함수)를 중지하거나 재개하는데 사용
module로딩 방식 개선
- AMD, CommonJS의 영향을 받음
- module을 export하고 import해서 사용 할 수 있게 해줌
Module loaders support:
- Dynamic loading
- State isolation
- Global namespace isolation
- Compilation hooks
- Nested virtualization
Promises
비동기 방식에 쓰이는 방식. es6에서 정식지원 기존 angular의 $q에서 쓰이는 방식과 유사
Symbols
- object에서 특이한 문법 형식으로 쓰임. 어떤 정보를 개체에 덧붙인다.
- object의 고유값을 지정, 외부에서는 접근 할 수가 없음. object당 유일
- 7번째 타입(type)
심볼은 다른 어떤 것과도 다른 것
심볼은 일단 생성되면 변경되지 않습니다. 심볼에는 속성을 부여할 수 없습니다 (만약 strict 모드에서 그런 시도를 하면 TypeError가 발생합니다). 심볼은 속성 이름으로 사용할 수 있습니다. 여기까지의 특성들은 모두 문자열과 유사합니다.
반면, 각 심볼은 고유합니다. 다른 심볼들과 구별됩니다 (같은 주석을 갖고 있더라도 다른 심볼입니다). 그리고 우리는 간단하게 새로운 심볼을 만들 수 있습니다. 여기까지의 특성들은 객체와 유사합니다.
ES6 심볼은 Lisp나 Ruby 같은 랭귀지의 좀 더 전통적인 심볼들과 비슷합니다. 하지만 랭귀지에 아주 밀접하게 통합되어 있지는 않습니다. Lisp 랭귀지의 경우 모든 식별자들은 심볼입니다. JS 랭귀지의 경우, 대부분의 식별자들과 속성 키(key)들은 여전히 문자열입니다. 심볼(Symbol)은 그냥 추가 옵션일 뿐입니다.
심볼에 관련된 주의사항이 있습니다. 랭귀지의 다른 요소들과 달리, 심볼은 문자열로 자동 변환되지 않습니다. 심볼을 다른 문자열에 이어붙이려고(concatenate)하면 TypeError가 발생합니다.
그 외
고정 공백 유니코드 지원
Map + Set + WeakMap + WeakSet 자료구조 지원
Proxies
Math + Number + String + Array + Object APIs에 다양한 매서드 추가
블로그의 내용은 대부분 출처의 블로그에서 퍼온 내용입니다.
좀더 자세한 내용을 보고 싶다면 아래 링크를 방문하시길 바랍니다.
출처: http://web-front-end.tistory.com/21 [프로그래밍 요람에서 무덤까지]
출처: http://krksap.tistory.com/755 [경록김의 뷰티풀 프로그래밍]
출처: http://vnthf.logdown.com/posts/2016/05/18/hello-world
출처: http://krksap.tistory.com/755 [경록김의 뷰티풀 프로그래밍]
출처: http://vnthf.logdown.com/posts/2016/05/18/hello-world
댓글 없음:
댓글 쓰기