1. 解构赋值
//对象
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };
// foo = 'aaa'
// bar = 'bbb'
 
let { baz : foo } = { baz : 'ddd' };
// foo = 'ddd'

let obj = {p: ['hello', {y: 'world'}] };
let {p: [x, { y }] } = obj;
// x = 'hello'
// y = 'world'
let obj = {p: ['hello', {y: 'world'}] };
let {p: [x, {  }] } = obj;
// x = 'hello'

//数组
let [a, b, c] = [1, 2, 3];
// a = 1
// b = 2
// c = 3
  1. 模板字符串
var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b} and
not ${2 * a + b}.`);
// "Fifteen is 15 and
// not 20."
  1. 箭头函数
// 无参
var fn1 = function() {}
var fn1 = () => {}
 
// 单个参数
var fn2 = function(a) {}
var fn2 = a => {}
 
// 多个参数
var fn3 = function(a, b) {}
var fn3 = (a, b) => {}
 
// 可变参数
var fn4 = function(a, b, ...args) {}
var fn4 = (a, b, ...args) => {}
  1. ...扩展操作符
let obj1 = {
    book1: '葫芦娃1',
    book2: '葫芦娃2',
    book3:'葫芦娃3',
}
let obj2 = {
    ...obj1,
    book4:'葫芦金刚',
}
console.log(obj2) //{book1: "葫芦娃1", book2: "葫芦娃2", book3: "葫芦娃3", book4: "葫芦金刚"}

//如果后者与前者相同,后者覆盖前者
let obj1 = {
    book1: '葫芦娃1',
    book2: '葫芦娃2',
    book3:'葫芦娃3',
    book4: '葫芦金刚',
}
let obj2 = {
    ...obj1,
    book4: '葫芦金刚XL',
    book5: '蛇精',
}
console.log(obj2) //{book1: "葫芦娃1", book2: "葫芦娃2", book3: "葫芦娃3", book4: "葫芦金刚XL", book5: "蛇精"}
  1. Promise
const promise = new Promise(function(resolve, reject) {
  //some code
  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});

promise()
.then(function(data){
    console.log('resolved');
    console.log(data);
})
.catch(function(reason){
    console.log('rejected');
    console.log(reason);
});

ES7 awit/async

async function testSync() {
     const response = await new Promise(resolve => {
         setTimeout(() => {
             resolve("async await test...");
          }, 1000);
     });
     console.log(response);
}
testSync();//async await test...

//catch
async function catchErr() {
      try {
          const errRes = await new Promise((resolve, reject) => {
                setTimeout(() => {
                    reject("http error...");
                 }, 1000);
           );
        } catch(err) {
             console.log(err);
        }
}
catchErr(); //http error...

Q.E.D.