TypeScript의 기반이 되는, 클래스 문법과 모듈 기능 추가, IE9 부터 지원
- 호이스팅이 사라진 것 같은 효과
- 함수 단위 스코프에서 블록 단위 스코프로 변경
- this를 동적으로 바인딩하지 않는 화살표 함수
- 모듈화 지원
- 콜백 지옥에서 구원해줄 Promise
- Default, Rest 파라미터
- 해체 할당, Spread 연산자
- 템플릿 리터럴
추가된 문법
비구조화 할당 (Destructuring Assignment)
ES5
var name = req.body.name
var age = req.body.age
var email = req.body.email
ES6
const {name,age,email}= req.body
객체 초기자 ( Object Initialize - Property Shorthand )
ES5
var name = 'hak'
var age = 27
var email = 'code.ryan.lee@gmail.com'
var datas = { name: name, age: age, email: email }
ES6
let name = 'hak'
let age = 27
let email = 'code.ryan.lee@gmail.com'
let datas2 = {username: name, age, email}
Template Literals
ES5
var username = req.body.username
if ( !username ) {
throw "'username' must required. Your input: " + username + "."
}
ES6
let = req.body
if ( !username ) {
throw `'username' must required. Your input: $.`
}
기본 매개변수( Default Parameters )
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 `$ $ at $`
}
Promise
const getName = (user_id) => {
return new Promise( (resolve, reject) => {
if ( !user_id ) {
return reject('user_id must be required.')
}
Model.select('table_users', user_id)
.then( result => { resolve( result.username ) })
.catch( err => { reject( err ) })
});
}
Generator ( co모듈 )
const gen = (a,b,c,conn) => {
return new Promise((resolve,reject) => {
return co(function* (){
try{
yield async1(a);
yield async1(b);
yield async1(c);
resolve(true);
}catch(e) {
reject(e);
}finally{
conn = null;
}
})
})
}
'IT 공부 > JS' 카테고리의 다른 글
프로토 타입 (0) | 2023.03.30 |
---|---|
호이스팅 (0) | 2023.02.13 |
스코프 에 대해 (0) | 2023.02.03 |
sequelize js 사용법 (0) | 2023.02.02 |
console.[ ? ? ] (0) | 2023.01.09 |
ES7 (ES2016) 이후 문법 정리 (0) | 2022.08.17 |
댓글