ES6 개요

- JS가 ES6 버전으로 넘어오면서, 많은 편의 문법이 추가되었고, 이것은 모던 SPA 프론트엔드 프레임워크에 큰 밑받침이 되었다. 특히 비구조화 할당과 spread 문법은 자주 필수적으로 사용된다.

 

비구조화 할당

- 변수에 값 할당하는 간편 방식 

[~ ES5]

```

var name = req.body.name
var height = req.body.height

var weight = req.body.weight

```

ES6

```

const {name, height, weight} = req.body // name, height, weight를 굳이 중복으로 쓰지 않음

// 여러줄에 걸쳐 값을 일일히 가져올 필요 없이, 특정 객체의 일부 속성으로만 이루어진 객체를 생성할 수 있다.

```


 

객체 초기자

ES5

```

var name = 'nick'
var height = 166
var weight = 64
var datas = {
  name: name,
  height: height,
  weight: weight
}

```

ES6

```

let name = 'nick'
let height = 166
let weight = 64


let datas = {name, height , weight }                 // datas.name으로 접근 가능?
let datas2 = {username: name, height , weight } //

```

 

# 템플릿 리터럴

[ES5 이전]

```

var username = req.body.username
if ( !username ) {
    throw "'username' must required. Your input: " + username + "."
}

```

ES6

```

let {username} = req.body // 위에서 제시된 비구조화 할당 방식
if ( !username ) {
    throw `'username' must required. Your input: ${username}.`
}

 

```

 

# 기본 매개변수

- 함수 선언시, 기본값 바로 할당 가능

- Input, output을 간편하게 표시한 화살표 함수 가능

~ES5

```

var greeting = function(username, date, message) {
  username = typeof username !== 'undefined' ? username : 'anonymous'
  date = typeof date !== 'undefined' ? date : new Date()
  message = typeof message !== 'undefined' ? message : 'hello'
  return message + ' ' + username + ' at ' + date
}

```

ES6

```

const greeting = (username='anonymous', date=new Date(), message='hello') => {
    return `${message} ${username} at ${date}` //위에서 제시된 템플릿 리터럴
}

```

# JS 에서 비동기 처리의 진화과정

callback -> async.js -> Promise -> Generator(현재) -> async/await(미래)

 

# Promise : 비동기 함수처리를 지원해주는 객체

ES6에서는 Promise가 표준 내장 객체로 추가돼서 외부 모듈 없이 사용할 수 있다.

모든 비동기 함수는 Promise를 반환하게 만드는 게 핵심이다.

기존의 callback 스타일로 작성해도 되는 간단한 코드들도 모두 Promise를 반환한다는 규칙으로 함수 convention

const getName = (user_id) => {
return new Promise( (resolve, reject) => { //Promise 객체 생성
if ( !user_id ) {
return reject('user_id must be required.') //메인 비동기 로직에서 바로 종료시, return과 reject()함께 호출;
}

Model.select('table_users', user_id)       //메인 비동기 로직
.then( result => { //비동기 실행 정상완료시 호출
resolve( result.username )
})
.catch( err => {  //비동기 실행 비정상완료시 호출
reject( err )
})
});
}

# Generator

function*이 추가되었다.

Generator 함수는 호출되어도 즉시 실행되지 않고, 대신 함수를 위한 Iterator 객체가 반환

const bigPicture = function* () {
	let awesome = yield beautiful()
}

 

# async/await

 

'[DEV] Programming Lang > JavaScript' 카테고리의 다른 글

Promise, Async Await에 대한 고찰  (0) 2020.10.28
ISODate에 대한 고찰  (0) 2020.10.08
World Easiest Text Editor  (0) 2020.08.28
Node JS Date Library 비교  (0) 2020.08.13
JavaScript 용어정리  (0) 2020.07.10
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기