高阶函数
一.什么是高阶函数
1.函数作为参数传给另一个函数。
2.函数作为另一个函数的返回结果。
函数作为参数 例如:
// 函数作为参数
// 模拟JS中数组的forEach方法
function forEach (array, fn) {
for (let i = 0; i < array.length; i++) {
fn(array[i])
}
}
let arr1 = [1,2,3,4,5]
forEach (arr1,function(item){
console.log(item)
}) //依次输出1,2,3,4,5
// filter
function filter (array, fn) {
let results = []
for (let i = 0; i < array.length; i++) {
if (fn(array[i])) {
results.push(array[i])
}
}
return results
}
let arr2 = [1,3,4,5,7,9]
let r = filter (arr2 , g => g % 2 === 0)
console.log(r)// 输出4
函数作为返回值
function yuanFn () {
let msg = 'Hello Yuan'
return function () {
console.log(msg)
}
}
const fn = yuanFn()
fn() //输出 Hello Yuan
二.使用高阶函数的意义
1.使我们的代码更加简洁和准确。
2.使我们关注于数据 而不是实现的方法上。