简介

本文简单介绍一下es6的常用语法,面向后端看的。前端请不要看这种简略的文章。

let

和其他语言的声明一样了。var声明的变量是全局变量。用let声明出来的变量和你写java时用的int double这些作用域规则基本相同。

const

不会有人不知道常量的重要性吧?当然这东西也没什么说的...

解构赋值

数组解构

var arr = [1,2,3];
// 传统的js
let a = arr[0];
let b = arr[1];
let c = arr[2];
console.log(a,b,c);
//es6的解构
var [x,y,z] = arr;
console.log(x,y,z);

对象解构

var user = {
    username : "吕布",
    weapon:"方天画戟",
    horse:"赤兔马"
};
// 传统的js
let mingzi = user.username;
let wuqi = user.weapon;
let zuoji = user.horse;
console.log("姓名:"+mingzi+",武器:"+wuqi+",坐骑:"+zuoji);

//es6的解构
let {username,weapon,horse} = user; // 注意:解构的变量名必须是对象中的属性
console.log("姓名:"+username+",武器:"+weapon+",坐骑:"+horse);

格式化字符串

printf晓得伐?

let name = "bob"
let age = 18
let str = `${name}'s age is ${age}`

对象声明简化

let name = "bob"
let age = 18
let user = {name,age}

定义方法简写

let user1 = {
    say : function(){
        console.log("大家好!");
    }
};
let user2 = {
    say() {
        console.log("...");
    }
};

​ 其实就是面向对象语言的那一套。

对象拓展运算符

其实就是用...取出一个对象所有可遍历的属性

深拷贝

let user1 = {
    name:"项羽",
    age:34
};
let user2 = {...user1}; // 深拷贝(克隆)

合并对象

let user1 = {
    name:"项羽",
    age:34
};
let user2 = {head:"诸葛亮"};
let user = {...user1,...user2};

默认参数和不定长参数

默认参数就是function(age = 18)

不定长参数就是function(...arg)

lambda

var f1 = a => a*10;
var f2 =  (a,b) => {
    let sum = a+b;
    return sum;
}
var f3 = (a,b) => a+b;

Promise

next(1)
.then(res => { // 成功
    console.log(res);
    return next(2); //在then方法中调用的next方法,一定要用return ,否则不会通过resolve把数据往下传递
})
.then(res => {
console.log(res);
return next(3);
})
.then(res => {
console.log(res);
})
.catch(() => { //处理失败:catch方法的第二个参数是失败的回调
console.log("出错啦!");
});