본문 바로가기

개발/Web

ES6(ECMAScript6)

const/let

- const/let 은 block 스코프이다.

 

Arrows

- 화살표 함수는 문법을 사용하는 축약형 함수이다.

- 표현식의 결과 값을 반환하는 표현식 본문과 상태 블럭 본문을 지원.

- 일반 함수의 자신을 호출하는 객체를 가리키는 dynamic this 와 달리 arrows 함수는 코드의 상위 스코프를 가리키는  lexical this 를 가짐.

 

Classes

- ES6 클래스는 프로토타입 기반 객체지향 패턴을 더 쉽게 사용할 수 있는 대체재.

- 클래스 패턴 생성을 더 쉽고 단순하게 생성할 수 있음

 

Enhanced Object Literals

- ES6에서 객체 리터럴은 선언문에서 프로토타입 설정.

- 단축 표기법, 메서드 정의 클래스 호출 및 동적 속성명 지원.

- 객체 리터럴 및 클래스 선언, 객체기반 설계 편리

 

Template Strings

- ES6 부터는 Template literals 라 칭함.

- 더 편하게 string을 생성할 수 있음.

- 문자열 보간과 유사함.

 

Destructuring

- 배열과 객체에 패턴 매칭을 통한 데이터 바인딩을 제공.

- 할당 실패에 유연하며 실패 시 undefined 값 자동할당.

 

Default + Rest + Spread

- 파라미터에 기본 값을 설정 가능.

- 가변인자를 사용 가능하며, 배열로 치환.

- Rest parameters는 arguments 보다 직관성을 제공.

- 함수 호출 시 배열을 일련의 인자에 나누어 주입.

 

Iterators + For...Of

- Iterator 객체는 CLR의 IEnumerable 혹은 Java의 Iterable처럼 사용자 정의의 반복 가능.

- for..of 반복문이 ES6에서 추가 되었으며 for..in 반복문과 달리 iterator 기반의 컬렉션 전용 반복문.

- Iteration은 duck-type 인터페이스를 기반.

 

Generators

- Generators는 function* yield 키워드를 이용하여 iterator 선언을 단순하게 작성할 수 있음.

- function*로 선언한 함수는 Generator 객체를 반환.

- Generators는 iterator의 하위 타입이며 next throw 메서드를 가지고 있음.

 

Unicode

- 문자열에 새로운 유니코드 리터럴과 정규표현식에 u 모드가 추가.

- 21비트 형식까지 처리하기 위한 신규 API가 추가.

 

Modules

- 언어 차원에서 컴포넌트 정의를 위한 모듈을 지원.

- 유명한 JavaScript 모듈 로더들(AMD, CommonJS)의 패턴을 적용.

- 런타임 동작은 호스트에 정의된 기본 로더에 의해 정의.

- 묵시적 비동기 형태로 요구되는 모듈들이 정상적으로 로드되기 전까지 코드가 실행되지 않음.

 

Module Loaders

- Module Loaders는 다음을 지원.

1. 동적 로딩(Dynamic loading)

2. 상태 격리(State isolation)

3. 전역 네임스페이스 격리(Global namespace isolation)

4. 컴파일 훅(Compilation hooks)

5. 중첩 가상화(Nested virtualization)

 

Map + Set + WeakMap + WeakSet

- 일반 알고리즘을 위한 효율적인 데이터 구조 제공

- WeakMap과 WeakSet는 메모리 누수로 부터 자유롭게 해줌.

 

Proxies

- 프록시(Proxy)를 사용하면 호스트 객체에 다양한 기능을 추가하여 객체를 생성 가능.

- interception, 객체 추상화, 로깅/수집, 값 검증 등에 사용될 수 있음.

 

Symbols

- 심볼(Symbol)은 객체 상태의 접근 제어를 가능.

- Symbol은 새로운 원시 타입으로 이름 충돌의 위험 없이 속성(property)의 키(key)로 사용할 수 있음.

 

Subclassable Built-ins

- ES6에서 Array, Date, DOM Element 같이 내장 객체들은 상속 가능.

 

Math + Number + String + Array + Object APIs

- core Math 라이브러리, Array 생성 helper, String helper, 복사를 위한 Object.assign 등 많은 라이브러리들 추가.

 

Binary and Octal

- 2진법(b), 8진법(o) numeric 리터럴 형식이 추가.

 

Promises

- Promise는 비동기 프로그래밍을 위한 라이브러리.

- Promise는 미래에 생성되는 값을 나타내는 일급 객체.

- Promise는 현존하는 많은 JavaScript 라이브러리에 사용.

 

Reflect API

- Reflection API는 런타임 시 객체에 대해 작업을 수행 가능.

- 프록시 트랩(proxy traps)와 같은 메타 함수들을 가지고 있음.

- Reflection은 프록시를 구현하는데 유용.

 

Tail Calls

- 마지막에 호출되는 함수가 호출 스택이 초과되게 하지 않음.

- 재귀 알고리즘을 매우 큰 입력 값에서도 안전하게 만들어줌.

 

#참고자료

https://jsdev.kr/t/es6/2944

반응형

'개발 > Web' 카테고리의 다른 글

이미지 파일 업로드 확장자, 사이즈 체크  (0) 2020.07.28
로딩 애니메이션  (0) 2020.07.23
CSS 플러스, 마이너스 아이콘  (0) 2020.07.05
HTML5 구조 태그  (0) 2020.06.28
TypeScript 정적 타이핑  (0) 2020.06.21