彻底搞清高阶函数与高阶组件的关系

194 阅读1分钟

链接: juejin.cn/post/684490…

一、 高阶函数

高阶函数英文叫Higher-order function。对其他函数进行操作的函数,可以将它们作为参数或返回它们。 这句话有点费解,其实我们可以归纳为以下条件满足之一就可以认为的高阶函数

接受参数为函数

返回参数为函数

下面我们举例说明 首先我们先写一个普通函数比如:一个加法运算函数,传入两个数字返回一个两数之和。

   const add = (x, y) => x + y
console.log(`add: ${add(1, 2)}`)

下面我们写一个高阶函数目的是希望将原有的加法运算函数的结果进行修饰 比如我们希望将结果做一个简单的格式化 :比如让他的返回结果用“[]”包裹。

image

大家注意这个高阶函数同时满足了高阶函数的两个特点传入参数和返回值都是函数。

     // 高阶函数
    const format = fn => (...args) => `[${fn(...args)}]`
    const myAdd = format(add)
    console.log(`format: ${myAdd(1, 2)}`)
    运行结果 format:[3]
    

如果想通过参数定义包裹的字符的话 就需要将原有的函数进行柯里化 或者 说是升阶

const format = (front, end) => fn => (...args) => `${front}${fn(...args)}${end}`
const myAdd = format('【','】')(add)
console.log(`format: ${myAdd(1, 2)}`)
运行结果: format:[3]

总结来说,可以通过高阶函数将普通函数的功能进行了扩展。