什么是高阶函数
将参数或返回值为函数的函数称为高阶函数
函数作为参数
把函数当作参数传递给另一个函数
fucntion forEach(array,fn){
for(let i=0;i<array.length;i++){
fn(array[i])
}
}
函数作为返回值
把函数作为另一个函数的返回结果
function once(fn){
let done = false
return function(){
if(!done){
done = true
return fn.apply(this,arguments)
}
}
}
常见高阶函数
// map
const map = (array, fn) => {
let results = []
for (let vlue of array) {
result.push(fn(value))
}
return result
}
// every
const every = (array, fn) => {
let result = true
for (let value of array) {
result = fn(value)
if (!result) {
break
}
}
return result
}
// some
const some = (array, fn) => {
let result = false
for (let value of array) {
result = fn(value)
if (result) {
break
}
}
return result
}
// filter
const filter = (array, fn) => {
let result = []
for (let i = 0; i < array.length; i++) {
if (fn(array[i])) {
results.push(array[i])
}
}
return result
}
// forEach
const forEach (array, fn) => {
for (let i = 0; i < array.length; i++) {
fn(array[i])
}
}