ES6

1. let

  • 不能重复声明;
  • 块级作用域(两个大括号外不能访问“{ }”),var 是函数级作用域==》ES3;
  • let 不会使变量声明提升,var 会将变量声明提升至函数内部开始处;
var d=new Date();
function foo(){
    console.log(d);
    if(false){
        var d="hello";
    }
}

以上代码输出 undefined ,相当于

var d=new Date();
function foo(){
    var d;
    console.log(d);
    if(false){
        d="hello";
    }
}

使用 let 声明,会正常输出 d 的值,let 不会使变量提升

var d=new Date();
function foo(){
    console.log(d);
    if(false){
        let d="hello";
    }
}

2. const 常量,不可变,只能定义一次,块级作用域

const CONSTA="consta";
{
    const CONSTA="constb";
    console.log(CONSTA);
}
console.log(CONSTA);

输出

constb

consta

3. 箭头函数

var foo=v=>v;
var foo=(v)=>{return v;}
var foo=function(v){
    return v;
}

以上三种写法等价;

箭头函数不能用作构造函数,不能 new

4. class 类

  • 之前定义类
function People(name){
    this.name=name;
}
People.prototype.showName = function() {
    console.log(this.name);
};

ES6 引进 class 关键词后,可以使用下面方式定义类

class People{
    constructor(name){
        this.name=name;
    }

    showName(){
        console.log(this.name);
    }
}

5. Object 新增方法 Object.assign() ,用来对象合并,相当于 $.extend()

对象合并,第一个参数作为目标对象(合并之后的对象),之后的参数的属性,如果没在目标对象上找到,则追加新属性;如果在目标对象上找到,则覆盖目标对象属性的值。

var target={a:1,b:1};
var s1={a:2,b:2,c:2};
var s2={d:3};

Object.assign(target,s1,s2);

console.log(target);

6. Promise 对象

用法:resolve:成功,reject:失败

  var promise=new Promise(function(resolve,reject){
        setTimeout(function(){
            resolve("成功")
        },3000)
    });
    promise.then(function(data){
        console.log(data);
    });

你可能感兴趣的:(ES6)