• 函数式编程---小记


    高阶函数(HOC)

      js中函数可以被赋值、当作参数进行传递、被其他函数返回,在js中函数就是一等公民。

      高阶函数: 接收函数、返回函数

    // 数组的筛选
    const arr = [1,2,3,4,5]
    
    // 一般实现
    let newArr = []
    for (let i = 0; i < arr.length; i++){
      if (arr[i] > 2) {
         newArr.push(arr[i])
      }
    }
    
    // 使用filter
    arr.filter(item => item> 2)

    函数的柯里化与偏应用

      柯里化: 将多参数的函数转化为可以多次调用的函数

      const curry = function (fn) {
        if (typeof fn !== 'function') {
          throw new Error('参数必须为function')
        }
        return function curryFn (...args) {
          if (args.length < fn.length) {
            return function () {
              return curryFn.apply(null, args.concat([].slice.call(arguments)))
            }
          }
          return fn.apply(null, args)
        }
      }

      偏应用:预先给点参数,调用的时候再传其余的

      const partial = function (fn, ...args) {
        return function (...innerArgs) {
          let index = 0
          for (let i = 0; i < args.length && innerArgs.length; i++) {
            if (args[i] === undefined) {
              args[i] = innerArgs[index++]
            }
          }
          return fn.apply(null, args)
        }
      }

    函数的组合

      多个函数一起按照管道的顺序完成事情。

    // compse函数
      const compose = function (...args) {
        return function (val) {
          return args.reduce.call(args.reverse(), function(cur, fn) {
            return fn(cur)
          }, val)
        }
      }

     

  • 相关阅读:
    ArrayList源代码深入剖析
    java线程基础巩固---wait和sleep的本质区别是什么,深入分析(面试常见问题)
    设计模式相关面试问题-模板方法
    设计模式相关面试问题-适配器
    设计模式相关面试问题-单例
    python-面向对象-10-单例
    python-面向对象-11-异常
    ping
    arp欺骗
    list的方法、操作
  • 原文地址:https://www.cnblogs.com/wjyz/p/14667658.html
Copyright © 2020-2023  润新知