美文网首页
高阶函数

高阶函数

作者: EdmundChen | 来源:发表于2018-10-02 20:25 被阅读11次

高阶函数定义:

    1. 以一个函数作为参数
    1. 以一个函数作为返回结果

高阶函数捕获参数

为啥需要创建一个以函数为返回值的函数?

高阶函数的参数是用来“配置”返回函数的行为的。
eg: makeAdder, 它参数配置了其返回函数每次添加数值的大小

var add100 = makeAdder(100);
add100(40) // => 140

通过将函数makeAdder的返回函数命名为add100, 这里特别强调了返回函数是如何被"配置"的。 这是非常有用的,但其能力有限。不同的是, 经常会看到一个函数返回一个捕获变量的函数。

捕获变量的好处

假如需要一个生产唯一字符串的函数

function uniqueString(len) {
  return Math.random().toString(36).substr(2, len);
}
uniqueString(10); // => '3rms32dsx'

然而,如果要生成具有特定前缀的唯一字符串,怎么办? 可将uniqueString修改为

function uniqueString(prefix) {
  return [prefix, new Date().getTIme()].join('');
};
uniqueString('test')
uniqueString(10); // => 'test3rms32dsx'

如果需要再次变更, 需要返回一个添加了前缀,并且从某一个值开始增长的字符串,这种情况下,上述方法就不行了。 具体效果如下

uniqueString('ghosts'); // => 'ghosts0'
uniqueString('test'); // => 'test1'

实现如下

function makeUniqueStringFunction(start) {
   let count = start;
  return (prefix)=>[prefix, count++].join('');
}
var uniqueString = makeUniqueStringFunction(0);

uniqueString('ghosts'); // => 'ghosts0'
uniqueString('test'); // => 'test1'

makeUniqueStringFunction 使用了conut的变量来追踪当前值。 虽然对于外界操作来说,该变量是安全的, 但是它的存在会增加复杂度,当一个函数的返回值只依赖于它的参数时, 被称为:引用透明。 实际当中我们应该尽量避免这样的函数, 除非他们是绝对必要的。

相关文章

  • python学习(三)函数式编程

    高阶函数 函数也是变量,函数参数为函数的函数,称作高阶函数 自定义高阶函数 内建高阶函数 map/reducema...

  • 11.Lambda和高阶函数(Lambda and Higher

    高阶函数 kotlin_Lambda,高阶函数 *swift_高阶函数

  • Python | 高阶函数基本应用及Decorator装饰器

    一、高阶函数 理解什么是高阶函数?以及高阶函数的基本应用方法 ▲ 高阶函数 在了解什么是高阶函数之前,我们来看几个...

  • 四、函数进阶

    一. 高阶函数 参数类型包含函数类型或返回值类型为函数类型的函数为高阶函数。 常见的高阶函数 高阶函数的调用 二....

  • Kotlin 高阶函数

    什么是高阶函数 将函数作为参数或者返回值的,称高阶函数。 定义高阶函数 action是一个高阶函数,(Int) -...

  • 高阶组件

    高阶组件 先来引入这个概念 高阶函数是什么? 高阶函数就是一个函数返回一个函数eg: 高阶组件 类同 高阶组件就是...

  • [JS函数] (Array)の高阶函数

    JS函数 高阶函数 高阶函数英文叫Higher-order function。那么什么是高阶函数? JavaScr...

  • HOC - High Order Component 高阶组件

    高阶函数 简而言之,可以接收函数作为参数的函数就是一个高阶函数。 上面的hoc函数就是一个高阶函数。 高阶组件 高...

  • Day10. 高阶组件

    1. 认识高阶函数 什么是高阶组件呢?认识高阶函数.png 高阶函数: 接收一个或多个函数作为输入, 输出一个函数...

  • Python高阶函数

    本文要点 1.什么是高阶函数 2.python中有哪些常用的高阶函数 什么是高阶函数? 在了解什么是高阶函数之前,...

网友评论

      本文标题:高阶函数

      本文链接:https://www.haomeiwen.com/subject/mzoooftx.html