• 前端函数式编程中的各种概念


    本文不涉及深层次的解析,仅作为知识点的查阅。因为概念介绍的比较简单,所以只适合有一定基础的人群阅读。

    1、什么是函数式编程?

      利用函数把运算过程封装起来,通过组合各种函数来计算结果。(将一套业务流程分割成多个功能,每个功能都用函数封装起来,最后实现这个业务其实就是在调用这些功能函数,这就是函数式编程)

    2、一些与函数式编程相关的概念

    • 纯函数 - 指的是函数无副作用,相同的输入(函数参数)有相同的输出(函数返回)
    • 闭包 - 存在内、外两层函数,内层函数对外层函数的局部变量进行来引用。(用途:定义一些作用域局限的持久化变量)
    • 递归 - 在函数内部调用函数自身。(非常消耗内存,易产生栈溢出错误,解决:严格模式下,采用尾调用;正常模式下,改为循环)
    • 尾调用 - 某个函数的最后一步是调用另一个函数,仅调用,不能有其他操作,但是参数可以
    • pointfree - 不使用要处理的值的形参,只合成运算过程,可以使代码更加清晰(就是将一些通用的函数,组合出各种复杂运算,省略掉中间不必要的参数变量)
    • 柯里化 - 把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术(官文翻译有点抽象,就是说把有多个参数的函数变成只有一个参数的函数,这个函数返回一个新函数,这个新函数接受剩余的参数并且返回最后的结果,这个过程就叫做柯里化)
      // 普通的add函数
      function add(x, y) {
          return x + y
      }
      
      // 柯里化后
      function curryingAdd(x) {
          return function (y) {
              return x + y
          }
      }
      
      add(1, 2)           // 3
      curryingAdd(1)(2)   // 3
    • 高阶函数 - 一个函数以函数为参数,或以函数为返回值,或这两种行为都有。
  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/eightFlying/p/function_js.html
Copyright © 2020-2023  润新知