let&const
let:只作用于它被定义的那个作用块
const:定义一个不能修改的常量
tip:在for循环中,设置循环变量的那部分是父作用域,循环体内部是单独的一个子作用域,如:
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);
}
// abc
// abc
// abc
函数参数
参数扩展/数组展开
1,收集参数
ES6 引入 rest 参数(形式为…变量名),收集剩余的参数
*rest Parameter 必须是最后一个
function f(a,b,...args){
alert(a,b,);//1,2,333,44,55,4
}
f(1,2,333,44,55,4);
2,展开数组
展开后的效果,跟直接把数组的内容写在这一样
let arr1=[1,2,3];
let arr2=[4,5,6];
let arr=[...arr1,...arr2];
alert(arr);//1,2,3,4,5,6
解构赋值
1.左右两边结构必须一样;
2,右边必须是个东西;
3,声明和赋值不能分开;
foo是匹配的模式,baz才是变量。真正被赋值的是变量baz,而不是模式foo。
let { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz // "aaa"
foo // error: foo is not defined
数组
map
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
let score=[20,60,61];
let result=score.map(item=>item>=60?'及格','不及格');
alert(result); //不及格,及格,及格
reduce
语法:arr.reduce(function(prev,cur,index,arr){
…
}, init);
arr 表示原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。
实例操作
|
– | – |
var arr = [3,9,4,3,6,0,9];
求数组中最大值
var max = arr.reduce(function (prev, cur) {
return Math.max(prev,cur);
});
由于未传入初始值,所以开始时prev的值为数组第一项3,cur的值为数组第二项9,取两值最大值后继续进入下一轮回调。
求数组之和
var sum = arr.reduce(function (prev, cur) {
return prev + cur;
},0);
由于传入了初始值0,所以开始时prev的值为0,cur的值为数组第一项3,相加之后返回值为3作为下一轮回调的prev值,然后再继续与下一个数组项相加,以此类推,直至完成所有数组项的和并返回。
filter
forEach
参考文章: https://www.jianshu.com/p/541b84c9df90