将一个函数作为另一个函数的参数;
1、数组的map方法,返回一个新数组
arr.map(item=>item*2);
2、数组的reduce方法:可以用来数组求和、数组去重
数组求和:
let arr=[1,2,3,4,5];
let sum=arr.reduce((prev,cur)=>{
return prev+cur;
},0);
数组去重:
let arr=[1,2,3,4,5,4,4,4,4,3,2,1];
let newArrya=arr.reduce((prev,cur)=>{
prev.indexOf(cur)===-1&&prev.push(cur);
return prev;
},[]);
3、数组的filter方法:对数组进行过滤和筛选
let persons=[
{name:'jack',age:21},
{name:'lucy',age:22},
{name:'jonson',age:24},
{name:'mark',age:18},
{name:'tom',age:29}
];
let newAge=persons.filter(item=>item.age>21);
console.log(newAge);
4、数组的flat方法:用于平铺数组,也就是数组扁平化,将多维数组拉平。
let arr=[1,2,3,4,[5,6,[7,8]]];
let arr1=arr.flat(Infinity); // flat方法中默认参数为(1),参数的含义是拉平数组的维度。Infinity指的是最大维度。
console.log(arr1);
flat目前还没有在所有浏览器兼容。
高阶函数的意义,函数可以作为参数被传入,也可以作为返回值。
简单使用案例:
let callback=(value)=>{
console.log(value);
}
let foo=(value,fn)=>{
typeof fn==='function'&&fn(value);
}
foo('hello',callback);