高阶函数

133 阅读1分钟

什么是高阶函数

将参数或返回值为函数的函数称为高阶函数

函数作为参数

把函数当作参数传递给另一个函数

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])
    }
}