新增:
1.定义变量
之前:var a=12;
特点:只有在函数里才有作用域;
允许重复定义;
用法:封闭空间(function(){var a=12;})()
ES6:let a=12;(已经被浏览器支持)
特点:只要在代码块(就是用{}包起来的代码块if、for…)里面let具备块级作用域;
不允许重复定义;
用法:封闭空间{let a=12;}
总结 :块级作用域就是匿名函数立即调用;
2.const——用来定义常量,一旦定义了就不能被修改(必须有初始值,同样不能重复定义); const a=12;
3.字符串连接
之前:’abc’+变量名+’def’;
ES6:’abc${变量名}der’;
4.解构赋值:
var [a,b,c]=[12,5,101];
console.log(a,b,c);//12 5 101
var {a,b,c}={a:12,c:101,b:5};
console.log(b)//5 跟顺序无关
模式匹配:左侧样式和右侧要一样
var [a,[b,c],d]=[12,[1,2],5];
console.log(a,b,c,d);
var [a,[b,c],{d,e}]=[12,[1,2],{d:ddd,e:eee}];
console.log(a,b,c,d,e);
解构赋值给默认值
var {time=12,id=0}={};
console.log(time,id);//12 0
5.复制数组:
之前:
1)循环(基本方法)
var arr=[1,2,3];
var arr2=[];
for(var i in arr){
arr2[i]=arr[i];
}
arr2.push(4);
console.log(arr);
ES6:
2)Array.from(arr);
var arr=[1,2,3];
var arr1=Array.from(arr);
arr2.pop();
console,log(arr,arr2);
3)超引用:
var arr=[1,2,3];
var arr2=[...arr];
arr2.pop();
console.log(arr,arr2);
function show(...args){
args.push(5);//在这里通过(三个点)的方法,将一个实参伪数组变成数组;
console.log(args);
}
show(1,2,3,4);
6.循环:
之前:for
for in
ES6:for of 循环(遍历,迭代)不能循环json对象,正真的目的是用来循环map对象;
var arr=["apple","banana","orange","pear"];
for(var i in arr){
console.log(i);//0 1 2 3
}
for(var i of arr){
console.log(i);//apple banana orange pear
}
var json={'a':apple,'b':banana,'c':orange,'d':pear};
for(var key in json){
console.log(key);//a b c d
}
Map对象:和json相似,也是键值对存在,主要是为和for of循环配合而生的。
创建:var map=new Map();
设置:map.set(name,value);
获取:map.get(name);
删除:map.delete(name);
遍历Map不能用for in
map.entries();map的实体
var map=new Map();
map.set('a','apple');
map.set('b','banana');
map.set('c','orange');
map.set('d','pear');
for(var name of map){//全写:for(var name of map.entries())
console.log(name);//a,apple b,banana c,orange d,pear
}
for(var [name,value] of map){
console.log(name,value);//a apple b banana c orange d pear
}
for(var name of map.keys){//只循环key
console.log(name);//a b c d
}
for(var name of map.values){//只循环value
console.log(name);//apple banana orange pear
}
7.函数
之前:
ES6:
箭头函数:
()=>{}
this:指向window
arguments:不能使用
对象:
对象语法简洁:
单例模式:
var name='abb';
var age=101;
var preson={
name,
age,
showName(){
return this.name;
},
showAge(){
return this.age;
}
}
面向对象:
之前:
ES6: