This document summarizes new features introduced in ECMAScript 6 (ES6), the 2015 version of JavaScript, including let and const block scoping, default arguments, rest parameters, arrow functions, iterators, generators, classes, class inheritance, promises, modules, templates, list matching, property value shorthand, and Set and Map data structures. It provides code examples comparing ES6 syntax to older JavaScript syntax for each new feature.
2. let
//es6
{
let version = 1.8;
console.log( version ); //1.8
}
console.log( version ); //version is not defined
//old
{
var version = 1.8;
console.log( version ); //1.8
}
console.log( version ); //1.8
3. 상수
const version = 1.0;
version = 1.5 //syntaxError ‘version is read-only
var version = 1.5; //syntaxError ‘Duplicate declaration ‘version’
5. rest arguments
function sumAll( a, b, ...num ){
var r = a + b;
for( let i = 0, len = num.length; i < len; i++){
r += num[ i ];
}
return r;
}
sumAll( 1, 2, 4, 5, 6, 8 );
6. arrow function
// es6
var getName = () => ‘myName';
//old
var getName = function(){
return ‘myName'
};
7. iterator
var nums = [1, 2, 3, 4, 5];
var iterator = new Iterator( nums );
try{
while( true ){
let value = iterator.next();
console.log( value );
}
}catch( e ){};
8. Generator
function* gener() {
for (var i = 0; i < 10; i++) {
yield i * 2;
}
}
var generator = gener();
generator.next();
generator.next();
9. class
//old
var User = function( name, age ){
this._name = name;
this._age = age;
}
User.prototype.getInfo = function(){
return this._name + '/' + this._age;
}
};
//es6
class User{
constructor( name, age ){
this._name = name;
this._age = age;
}
getInfo(){
return this._name + '/' + this._age;
}
};
10. class 상속
//es6
class Member extends User{
constructor( name, age ){
super( name, age );
this._company = ‘myCompany';
}
get company(){
return this._company;
}
};
//old
var Member = function( name, age ){
User.apply( this, artuments );
this._company = ' myCompany';
}
Member.prototype = new User();
Member.prototype.constructor = User;
User.prototype.company = function(){
return this._company;
};
11. promise
function delay( ms ){
return new Promise( function( resolve, reject ){
setTimeout( resolve, ms );
})
};
delay( 2000 ).then(function(){
console.log( '[promise1]' );
}).then(function(){
console.log( '[promise2]' );
});
funciton aFunc(){
console.log( ‘aFunc’ );
};
funciton bFunc(){
console.log( ‘bFunc’ );
};
function callback(){
aFunc();
bFunc();
};
function delay( ms, callback ){
setTimeout( function(){
callback();
}, ms);
};
12. module
import * as lib from 'js/external.js';
console.log( lib.multi( 4, 5 ) );
//js/external.js
export function multi(x, y){
return x * y;
};
13. template
var name = "Bob", time = "today";
var string = 'Hello ${name}, how are you ${time}?';
15. 선언
var company = 'nc';
var obj = { company };
console.log( obj.company ); //nc
var value = 'nc';
var obj = { ‘company’: value };
console.log( obj.company ); //nc
16. Set, map
var s = new Set();
s.add( 'one' );
s.add( 'two' );
s.add( '3' );
console.log( s );
var m = new Map();
m.set( 'age', 10 );
console.log( m.get( 'age' ) );