소개
ECMAScript6 로 알려진 또한,ECMAScript2015,최신 버전의 ECMAScript 표준입니다. ES6 은 언어에 대한 중요한 업데이트이며 ES5 가 2009 년에 표준화 된 이후 언어에 대한 첫 번째 업데이트입니다. 주요 자바 스크립트 엔진에서 이러한 기능의 구현이 현재 진행 중입니다.
ECMAScript6 언어의 전체 사양은 ES6 표준을 참조하십시오.,
ES6 는 다음의 새로운 기능이 포함됩니다:
- 화살표
- 클래스가
- 강화체 리터럴
- 템플릿 문자열
- 선언 및
- 로 나머지되
- 자+const
- 반복기를+습니다..,의
- 발전기
- 유니코드
- 모듈
- 모듈더
- 맵+트+weakmap+weakset
- 프록시
- 기호
- subclassable 내장 기능
- 약속을
- 수학+번호+string+배열+ 체 Api
- 바이너리 및 octal 리터럴
- 반영 api
- 꼬리를 통화
ECMAScript6 기능
화살표
화살표는 기능에 약어를 사용하는=>
문입니다. C#,Java8 및 CoffeeScript 의 관련 기능과 구문 적으로 유사합니다., 이들은 표현식의 값을 반환하는 표현식 본문뿐만 아니라 명령문 블록 본문을 모두 지원합니다. 함수와 달리 화살표는 주변 코드와 동일한 어휘this
를 공유합니다.
더 많은 정보:반 화살표수
클래스가
ES6 클래스는 간단한 설탕을 통해 시제품에 기반 OO 패턴이다. 하나의 편리한 선언적 양식을 갖는 것은 클래스 패턴을보다 쉽게 사용할 수있게하며 상호 운용성을 장려합니다. 클래스는 프로토 타입 기반 상속,수퍼 호출,인스턴스 및 정적 메소드 및 생성자를 지원합니다.,
더 많은 정보:반
강화체 리터럴
개체 리터럴 확장을 지원하는 설정의 시제품에서 건축,속기 위해foo: foo
과제 정의 방법을 만들고,최고 전화,컴퓨팅의 속성 이름으로 표현입니다. 함께,이러한 객체를 가져터 클래스 선언을 가까이 함께,그 개체 기반의 디자인에서 혜택의 일부는 동일한 설비를 갖추고 있습니다.,
더 많은 정보:반 문법과 형태:객체 리터럴
템플릿 문자열
템플릿자열을 제공합 구문 설탕을 구축을 위한 문자열입니다. 이것은 펄,파이썬 등의 문자열 보간 기능과 유사합니다. 선택으로,태그를 추가할 수 있습을 허용하는 문자열을 건설하는 주문을 피하고,주입 공격 또는 생성이 높은 레벨의 데이터 구조에서 문자열 내용입니다.
더 많은 정보:반 템플릿 문자열
선언 및
선언 및 수 바인딩 패턴 매칭을 사용하여 이에 대한 지원과 함께,일치하는 배열입니다., 선언 및가 실패드 컬러와 유사 표준을 개체 조회foo
,생산하는undefined
값을 때 발견되지 않습니다.
추가 정보:MDN Destructuring 할당
Default+Rest+Spread
callee-평가 된 기본 매개 변수 값. 배열을 함수 호출에서 연속적인 인수로 바꿉니다. 후행 매개 변수를 배열에 바인딩합니다. Rest 는arguments
의 필요성을 대체하고 일반적인 경우를보다 직접적으로 해결합니다.,
function f(x, y=12) { // y is 12 if not passed (or passed as undefined) return x + y;}f(3) == 15
function f(x, ...y) { // y is an Array return x * y.length;}f(3, "hello", true) == 6
function f(x, y, z) { return x + y + z;}// Pass each elem of array as argumentf(...) == 6
More MDN info: Default parameters, Rest parameters, Spread Operator
Let + Const
Block-scoped binding constructs. let
is the new var
. const
is single-assignment. Static restrictions prevent use before assignment.
function f() { { let x; { // okay, block scoped name const x = "sneaky"; // error, const x = "foo"; } // error, already declared in block let x = "inner"; }}
More MDN info: let statement, const statement
Iterators + For..,
반복자 객체는 CLR IEnumerable 또는 Java Iterable 과 같은 사용자 정의 반복을 가능하게합니다. 일반화for..in
사용자 정의 반복기 기반으로 반복for..of
. Linq 와 같은 게으른 디자인 패턴을 가능하게하는 배열을 실현할 필요가 없습니다.
반복은 이러한 오리 형식 인터페이스를 기반으로합니다(박람회에만 TypeScript 유형 구문 사용):
추가 정보:mdn for…생성기는 iterator-authoring 을 단순화합니다.
생성기
생성기는function*
및yield
를 사용합니다., 함수*로 선언 된 함수는 생성기 인스턴스를 반환합니다. 발전기는 하위의 반복기를 포함하는 추가적인next
및throw
. 이러한 값을 사용하여 흐름을 다시는 발전기,그래서yield
은 표현을 반환하는 값(또는 발생).async 프로그래밍과 마찬가지로 ES7await
제안을 참조하십시오.,
발생기 인터페이스(를 사용하여 타이프 라이터 유형에 대한 구문 박람회를 만):
interface Generator extends Iterator { next(value?: any): IteratorResult; throw(exception: any);}
더 많은 정보:반 반복 프로토콜
유니코드
비을 깨고 추가 지원하는 전체 유니코드 등 새로운 유니코드 리터럴 양식에서 문자열과 새로운 RegExpu
모드를 처리 코드가 포인트뿐만 아니라,새로운 Api 프로세스에서 문자열을 21bit 코드 포인트를 수준입니다. 이러한 추가 기능은 JavaScript 로 글로벌 앱 구축을 지원합니다.
추가 정보:MDN RegExp.프로토 타입.,유니 코드
모듈
구성 요소 정의를위한 모듈에 대한 언어 수준 지원. 인기있는 JavaScript 모듈 로더(AMD,CommonJS)의 패턴을 성문화합니다. 호스트 정의 기본 로더에 의해 정의 된 런타임 동작. 암시 적으로 비동기 모델-요청 된 모듈을 사용할 수 있고 처리 할 때까지 코드가 실행되지 않습니다.,v>
몇 가지 추가 기능을 포함한export default
및export *
// lib/mathplusplus.jsexport * from "lib/math";export var e = 2.71828182846;export default function(x) { return Math.log(x);}
// app.jsimport ln, {pi, e} from "lib/mathplusplus";alert("2π = " + ln(e)*pi*2);
더 반 정보:가져오는 문장, 수출 문
모듈 장전기
모듈더 지원
- 동적 하중
- 국 isolation
- 글로벌 네임스페이스 분리
- 편집 후크
- 중첩된 가상화
기본 모듈로더를 구성할 수 있습, 고 새로운 로더를 생성할 수 있습을 평가하고 부하는 코드에서 고립되거나 제한 상황.,
Map+Set+WeakMap+WeakSet
일반적인 알고리즘을위한 효율적인 데이터 구조. WeakMaps 는 누출이없는 객체 키 사이드 테이블을 제공합니다.
더 반 정도,집합,WeakMap,WeakSet
프록시
프록시를 사용하면 객체의 생성과의 전체 범위 행위를 호스팅하기 위해 사용할 수있는 개체입니다. 차단,객체 가상화,로깅/프로파일 링 등에 사용할 수 있습니다.
함정이 있 사용 가능한 모든 런타임의 수준의 메타-운영:
더 많은 정보:반 Proxy
기호
기호에 대한 액세스 제어 기능을 활성화에 대한 개체 상태에 있습니다., 기호는 속성을string
(ES5 에서와 같이)또는symbol
로 키 지정할 수 있습니다. 기호는 새로운 원시 유형입니다. 선택적description
디버깅에 사용되는 매개 변수-하지만 id 의 일부가 아닙니다. 기호는 고유하지만(gensym 과 같이)Object.getOwnPropertySymbols
와 같은 반사 기능을 통해 노출되기 때문에 비공개가 아닙니다.
더 많은 정보:반 상징
Subclassable 내장 기능
에 ES6,내장 기능과 같은Array
,Date
돔Element
s can be 하위.,
체를 위한 건축 기능을 지명된Ctor
지금 사용하는 두 개의 단계는(거의 모두가 전달):
- 통화
Ctor
할당 개체 설치하는 어떠한 특별한 동작 - 호출에서 생성자를 새 인스턴스를 초기화
알려진@@create
기호를 통해 사용할 수 있는Symbol.create
. 기본 기능은 이제@@create
를 명시 적으로 노출합니다.,
수학+번호+String+배열+개체 Api
는 많은 새로운 라이브러리가 포함한 핵심 수학 라이브러리,배열 변환 helpers,문자열 조력자,그리고 객체입니다.복사를 위해 할당하십시오.
더 MDN 정보:숫자,수학,배열.에서,배열.의,배열.프로토 타입.copyWithin,객체.지정
바이너리 및 Octal 리터럴
두 개의 새로운 숫자 리터럴 형태는 추가에 대한 바이너리(b
)그 진수(o
).
0b111110111 === 503 // true0o767 === 503 // true
약속
약속은 비동기 프로그래밍을위한 라이브러리입니다., 약속은 미래에 제공 될 수있는 가치의 일류 표현입니다. 약속은 기존의 많은 자바 스크립트 라이브러리에서 사용됩니다.
추가 정보:mdn Promise
REFLECT API
객체에 런타임 레벨 메타 연산을 노출하는 Full reflection API. 이것은 효과적으로 프록시 API 의 역수이며 프록시 트랩과 동일한 메타 작업에 해당하는 호출을 할 수 있습니다. 특히 프록시를 구현하는 데 유용합니다.,
// No sample yet
더 많은 정보:반 반영
꼬리를 통화
전화에 꼬리치는지를 보장합 성장할 스택 unboundedly. 제한되지 않은 입력에 직면하여 재귀 알고리즘을 안전하게 만듭니다.피>