ES6是2015年6月推出的ECMAscript新版本,里面有很多改进的新语法。
****************************************************************************************************************************
let 用来声明变量
var 和 let的区别:
let: 1,同一个作用域下一个变量只能声明一次
2,没有变量预解析
3,拥有块级作用域
var: 1,可以重复声明相同的变量
2,变量预解析
3,没有块级作用域
一对{}包裹的区域是一个代码块,let拥有块级作用域。
{
let a=10;
alert(a); //这里出来10
}
alert(a) //这里访问不到里面的a
****************************************************************************************************************************
const 声明一个常量
特性 :
1,常用的值是不可变的值。
2,没有预解析
3,不能重复声明
4,块级作用域
{
const a=10;
console.log(a);//10 如果重复声明a也会出错
}
console.log(a) //报错
****************************************************************************************************************************
变量的解构和赋值:
var {a,b,c}={a:12,b:5,c:8};
alert(c)//8
var [a,b,c]=[5,3,66];
alert(b)//3
复制数组:
1,
var arr=[2,4,6];
var arr1=Array.from(arr);
arr1.pop();
console.log(arr,arr1);//246 ,24
2,超引用
var arr=[1,2,3];
var arr1=[...arr];
arr1.pop();
console.log(arr,arr1);//123 ,12
数组解构赋值:
按照顺序进行解构
对象结构赋值:
按照属性名进行解构
****************************************************************************************************************************
for of循环:可以循环数组,但不能循环json;
真正目的为了循环map对象
Map对象:
和json相似,也是一种key-value形式
Map对象为了和for of循环配合而生的;
//var map=new Map();
设置:
//map.set(name,value);
获取:
//map.get(name)
删除:
//map.delete(name);
遍历map不能使用for in
var map=new Map();
map.set('a','a1');
map.set('b','b1');
map.set('c','c1');
map.set('d','d1');
for(var name of map){//key value 的形式
console.log(name)//a,a1 b,b1 c,c1 d,d1
}
//单个循环一个
for(var val of map.values()){
console.log(val)//a1,b1,c1,d1
}
for(var key of map.keys()){
console.log(key)//a,b,c,d
}
***************************************************************************************************************************
箭头函数:
注意事项:
1, this的指向问题,this指向window;
2,arguments ,不能使用。
obj.onclick=()=>{
obj.style.background="blue";
}
****************************************************************************************************************************
面向对象:
class person{//类
constructor(name,age){
this.name=name;
this.age=age;
}
showname(){//方法
return this.name;
}
showAge(){//方法
return this age;
}
}
var p1=new person('aa',5);
var p2=new person('bb',1);
alert(p1.showName==p2.showName)//true
//es6里面的面向对象写法大大节俭了代码