es6
一、 变量
1.var缺点:
- 可以重复声明;
- 限制修改;
- 没有块级作用域
2.let: 不能重复声明;变量-可以修改;块级作用域
3.const:不能重复声明;常量-不可以修改;块级作用域
4 .块级作用域用处的例子:
使用var时,如果要实现依次点击按钮分别弹出1,2,3时需要如下写法(闭包):

使用let时,如果要实现依次点击按钮分别弹出1,2,3时需要如下写法():

二、 函数
1 箭头函数
- 如果只有一个参数,()可以省略
- 如果只有一个return,{}和return可以省略
let show=function(a){
return a*2;}
show(12);//21
等价如下写法
let show=a=>a*2;
show(12);
2 参数
1) 参数扩展/数组展开(rest parameter)
- l 收集剩余的参数
function show(a,b,…args){}
但是rest parameter必须是最后一个

这种形式是不可以的!!

- 展开数组,展开后的效果相当于把数组内容写在这。
例如在arr=[1,2,3]中 1,2,3和…arr的写法是等价的。例如,
let arr=[1,2,3];
let show=function(a,b,c){
alert(a);
alert(b);
alert(c);
}
show(…arr);// 等价于show(1,2,3);
2) 默认参数
传进新参数就用新的,没有传进新的就用默认的。
function show(a,b=12,c=33){
console.log(a,b,c);//22,43,33
}
show(22,43);
三、 解构赋值
例:let [a,b,c]=[1,2,3];//a=1,b=2,c=3
- 左右两边结构必须一样
- 右边必须是个东西,如{2,5}就不是“东西”。
- 声明和赋值不能分开,必须在一句话里,如下写法不合法:
let [a,b,c];
[a,b,c]=[1,2,3];
其它例子:

打印结果:

当然,可以自己控制粒度,如上述例子也可以如下表示

打印结果:

四、 数组
1 map
作用:映射---进去几个出来几个,可以用来映射分数的及格等。
let arr=[1,2,3];
let result=arr.map(item=>item*2);//2,4,6
2 reduce
作用:汇总---进去一堆,出来一个,可以用来求总和、平均数等。
let arr=[2,3,4];
let result=arr.reduce((temp,item,index)=>{
if(index!=arr.length-1){
return temp+item;
}else{
return(temp+item)/arr.length//求平均数
}
})
执行过程中reduce回调函数的参数变化:
第一次:temp=2,item=3,index=1
第二次:temp=5,item=4,index=2
3 filter
作用:过滤器回调函数return true,则返回对应的item.
let arr=[
{title:’男士衬衫1’,price:75},
{title:’男士衬衫2’,price:5575},
{title:’男士衬衫3’,price:7335},
{title:’男士衬衫4’,price:725}
];
let arr.filter(item=>item>=1000);// {title:’男士衬衫2’,price:5575},{title:’男士衬衫3’,price:7335}
4 forEach
作用:循环,迭代
let arr=[1,2,3,4];
arr.forEach((item,index)=>{
alert(“index:”+index+”intem:”+item); });
注意:forEach回调函数没有return语句。
