前端学习之函数式编程—函数式编程概念+头等函数(代码片段)

萌萌的DDD 萌萌的DDD     2022-12-12     553

关键词:

什么是函数式编程

函数式编程(function programming FP)FP是编程范式之一,我们常听说的还有,面向过程编程,面向对象编程

函数式编程的思维方式

把现实世界的事物和事物之间的联系抽象到程序世界(对运算过程进行抽象)

注意:函数式编程中的函数并不是指程序中的函数(或调用的方法),并不是你在开发过程中使用了函数就叫做函数式编程。

函数式编程则代表的是映射关系

例如:

y=sin(x)

当我在数学中的sin函数中,输入x值为1时,y值必定也等于1,映射了x和y轴的关系

所以函数式编程代表的是相同的输入始终要得到相同的输出

函数式编程没有可变的变量、循环等这些命令式编程方式中的元素,像数学里的函数一样,对于给定的输入,不管你调用该函数多少次,永远返回同样的结果。

// 非函数式编程

   let num1 = 1
   let num2 = 2 

   let sum = num1 + num2

   console.log(sum) // 3




// 函数式编程

   function add(num1 , num2)
    
       return num1 + num2

    
   
   let sum = add(1,2)
   
   console.log(sum) // 3

函数是一等公民(头等函数)

MDN First Class Function

https://developer.mozilla.org/zh-CN/docs/Glossary/First-class_Function

所谓一等公民是指,函数与我们平时所使用的其他数据类型地位一样

  • 函数可以储存到变量中
  • 函数可以作为参数
  • 函数可以作为返回值

在JavaScript中函数就是一个普通的对象,因此可以吧函数储存到变量/数组中,并且可以作为另一个函数的参数和返回值

//  把函数赋值给变量

    let fn = function () 
      console.log('first class function')
   

    fn()


//  把函数赋值给数组
    let arr = [fn]
    
    arr[0]()


//  示例

    const Controller = 
        index(posts)  return Views.index(posts),
        create(posts,gets)  return Db.create(posts,gets) 
    

//  优化

    const Controller = 
        index:Views.index,
        create:Db.create,
    

    Controller.index()
    Controller.create

对象中赋值的并不是方法的调用,而是方法本身。

体现了函数一等公民的特性,在对象中作为返回值以及储存到变量的特点。

前端学习之函数式编程—柯里化(代码片段)

part01--柯里化概念柯里化是为了解决函数中不纯函数或函数硬编码的问题什么是硬编码functiongetAge(age)letmin=18returnage>min 函数式编程是保证相同的调用总能得到相同的结果,但当相同的调用有可能不能得到相同的结果时则... 查看详情

前端学习之函数式编程—纯函数(代码片段)

Part01纯函数概念纯函数:相同的输入永远会得到相同的输出,而且没有任何可观察的副作用纯函数就类似数学中的函数,用来描述输入与输出之间的关系,例如:y=f(x)Part02案例:slice和splice函数 数组的slice和splice分别是纯函数和不纯... 查看详情

前端学习之函数式编程—高阶函数(代码片段)

 什么是高阶函数(Higher-orderfunction)    可以把函数作为参数传递给另一个函数    可以把函数作为另一个函数的返回结果Part1可以把函数作为参数传递给另一个函数实现forEach函数//高阶函数-函数作为参数functionforEach(array,fn)for(... 查看详情

前端学习之函数式编程—函数组合(代码片段)

Part01函数组合纯函数和柯里化很容易写出洋葱代码=====>h(g(f(x)))一层一层套起来不宜阅读例如:获取数组最后的一个元素再转大写字母_.toUpper(_.first(_.reverse(array)))函数组合可以让我们把细粒度的函数重新组成... 查看详情

scala学习之函数式风格编程(代码片段)

FUNCTIONALPROGRAMMINGhttps://docs.scala-lang.org/overviews/scala-book/functional-programming.htmlScala允许您以面向对象编程(OOP)风格、函数式编程(FP)风格甚至混合风格编写代码,结合使用这两种方法。本书假设您是从Java、C++或C#等OOP语言来... 查看详情

01函数式编程概念

FunctionalProgramingFP函数式编程中的函数不是指程序中的函数,而是指数学中的映射关系Y=fn(X).同一个X始终对应同一个Y。是对运算过程中进行抽象。相同的输入始终得到相同输出。 纯函数的好处可以缓存纯函数的结果。相同输... 查看详情

kotlin函数式编程①(函数式编程简介|高阶函数|函数类别|transform变换函数|过滤函数|合并函数|map变换函数|flatmap变换函数)(代码片段)

...数式编程简介1、编程范式2、高阶函数3、函数式编程4、前端开发技术二、函数类别三、变换函数四、map变换函数1、map函数原型分析2、map函数设计理念3、代码示例五、flatMap变换函数1、flatMap函数原型分析2、代码示例一、函数式... 查看详情

函数式编程基本概念(代码片段)

编程范式命令式编程(Imperative)声明式编程(Declarative)函数式编程(Functional)面向对象、泛型、元编程也都是很主要的编程范式命令式编程:命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么声... 查看详情

scala基础:scala函数式编程基础概念定义调用机制

1 概念的说明1)在scala中,方法和函数几乎可以等同(比如他们的定义、使用、运行机制都一样的),只是函数的使用方式更加的灵活多样。2)函数式编程是从编程方式(范式)的角度来谈的,可以这样理解:函数式编程把函数当... 查看详情

scala函数式编程(代码片段)

Scala函数式编程什么是函数式编程?1、函数式编程将计算视为数学上的函数计算2、函数成为了和普通的值一样的"头等公民",可以像任何其他数据类型的值一样被传递和操作函数式编程成为越来越流行的编程范式1... 查看详情

python函数式编程,看这一篇就够了!

...精彩内容不迷路机器之心、Python编程时光本文对Python中的函数式编程技术进行了简单的入门介绍。头等函数在Python中,函数是「头等公民」(first-class)。也就是说,函数与其他数据类型(如int)处于平等... 查看详情

python函数式编程,看这一篇就够了!

...精彩内容不迷路机器之心、Python编程时光本文对Python中的函数式编程技术进行了简单的入门介绍。头等函数在Python中,函数是「头等公民」(first-class)。也就是说,函数与其他数据类型(如int)处于平等... 查看详情

[一]java8函数式编程入门什么是函数式编程函数接口概念流和收集器基本概念

 本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西此处并不是这个含义,更接近是数学上的函数看一下百度百科中关于函数... 查看详情

python3函数式编程

目录函数式编程高阶函数mapreducefilter返回函数匿名函数(lambda)装饰器参考资料相关知识:函数内部的变量在函数执行完后就销毁;Python中一切皆变量。函数式编程概念函数式编程是一种抽象程度很高的编程范式,纯粹的函数式编... 查看详情

函数式编程,这样学就废了

大家好,上次指北君给大家开启了函数式接口的介绍,今天,指北君将在第一篇JDK源码解析——深入函数式接口(应用篇一)基础上继续为大家解读函数式接口涉及到的知识点。本篇文章为函数接口的应用篇... 查看详情

你真的理解函数式编程吗?

你真的理解函数式编程吗? 大数据以及人工智能越来越流程,你是否可以轻松适应大数据编程,函数式编程在其中起着重要作用,如何从面向对象编程跳槽到函数式编程?你是否觉得函数式各种概念难于理解?本场Chat将为... 查看详情

函数式编程vs命令式编程

函数式编程vs命令式编程函数式编程属于声明式编程(DeclarativeProgramming),SQL就是典型的声明式编程。函数式编程(FunctionalProgramming)关注行为强调what,对应于数学里面的函数的对应法则。像餐馆里吃饭,提出自己的要求即可数学... 查看详情

scala之函数式编程根本概念-纯函数

什么是纯函数纯函数是函数式编程中的一个根本概念.纯函数要求一个函数输入对应输出,没有其它任何副作用,且引用透明.过程:没有返回值,只有副作用的函数一个纯函数有以下要求:没有副作用不向控制台打印不向文件写入数据... 查看详情