简介
本文简单介绍一下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("出错啦!"); });