ES6:
1、块级作用域:let 变量名=值;
好处:1、解决了声明提前
2、添加了块级作用域:{}
3、循环绑定事件时会自动记录住下标
2、模板字符串:
``我的名字叫${name}`
3、箭头函数:简化回调函数
简化规则:去掉function,在()和{}之间添加=>,形参如果只有一个可以省略小括号
函数体只有一句话,省略{}
函数体只有一句话,并且是return,{}和return都省略
4、for...of
for(var v of arr){
v;//当前值
}
缺点:1、不能修改原数组
2、只能遍历索引数组,不能遍历hash数组,也不能遍历对象
5、解构赋值:
顾名思义:解析结构后进行赋值 - 赋值的新方式,并且得到了增强
如果赋值符号,左右两边的结构一样,就会悄悄地脱掉结构再一一的进行赋值
语法:
1、像数组一样的解构赋值
var [a,b,c]=[1,2,3];
2、像对象一样的解构赋值
var {a,b,c=默认值}={c:值,b:值,a:值};
3、调用函数时,传递实参的顺序无所谓了 - 但底层还是像对象一样的解构赋值
function zwjs({name="无名氏",age=0,hobby="无"}){
return `我的名字叫${name},今年${age}岁,喜欢${hobby}`;
}
console.log(zwjs({age:18,hobby:"睡觉",name:"蔡皓蓝"}));
console.log(zwjs({}));
4、函数的返回的结果,可以有多个
function f1(){
var a=1,b=2;
return [a,b];
}
var [res1,res2]=f1();
console.log(res1);
console.log(res2);
6、Set和Map数据类型
*Set:类似于数组的数据类型 - 也适用于保存数据的,但是没有数组提供的操作多
创建:var s=new Set();
*去重数组:var s=new Set(arr);
将set变为数组:var newArr=[...s]
Map:类似于对象的数据类型 - 也适用于保存数据的,但是他比对象还要复杂麻烦
创建:var m=new Map();
添加:m.set("属性名","属性值");
获取:m.get("属性名");
7、*****class关键字:- react框架会用到
目的:简化了面向对象的三大特点(封装、继承、多态)
案例:
class Flyer{
constructor(name,speed){//就是以前的构造函数,里面放着自有属性
this.name=name;
this.speed=speed;
}//外面就是原型 - 放共有方法
fly(){
return this.name+"正在以时速"+this.speed+"公里飞行";
}
}
class Plane extends Flyer{//extends:继承:继承到构造函数里面自有属性以及共有方法
constructor(name,speed,count){//就是以前的构造函数,里面放着自有属性
super(name,speed);//super方法会自动去调用你继承的类的constructor方法
this.count=count
}//外面就是原型 - 放共有方法
fly(){//多态
return this.name+"正在以时速"+this.speed+"公里飞行,可以坐"+this.count+"人";
}
}
8、***模块化开发 - 目的:分工合作
主模块:引入:import {obj as 取别名} from "./文件路径.js"
注意:1、.js后缀不能省略
2、取了别名,原名不能使用了
分支模块:公开:export var obj={公开你想要公开的内容}
HTML页面:引入时:<script src="主模块" type="module"></script>
9、*****Promise:对异步进行了承诺、保证
异步的特点:不会卡住后续代码,所以多个异步同时执行,分不清谁先谁后
function dsq1(resolve){
setTimeout(()=>{
console.log("111")
resolve();
},Math.random()*1000);
}
function dsq2(){
return new Promise((resolve)=>{
setTimeout(()=>{
console.log("222")
resolve();
},Math.random()*1000);
})
}
function dsq3(){
return new Promise(resolve=>{
setTimeout(()=>{
console.log("333");
resolve();
},Math.random()*1000);
})
}
function dsq4(){
return new Promise(resolve=>{
setTimeout(()=>{
console.log("444")
},Math.random()*1000);
})
}
new Promise(dsq1).then(dsq2).then(dsq3).then(dsq4);