函数化编程

更新日期: 2019-09-11 阅读: 2.5k 标签: 编程

百科定义:
函数化编程: 又称泛函数编程,是一种编程泛式,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。简单理解,以函数为单元,对复杂逻辑进行拆分,将复杂逻辑转化为多个简单函数逻辑,同时通过对函数进行层层调用,来达到最终目的。
特点: 函数可以作为参数传入,也可以作为返回值返回。


1. 纯函数 && 非纯函数

定义: 输入一个x产生输出一个唯一y值
特点:
1. 输入相同的值时,输出也是一样的,不受外部环境影响
2. 运行时,无副作用,不对外部环境产生影响

Array.prototype.slice;
function add(a) {
        return a+1
}
add(1)
add(1) 

那么非纯函数则是正好相反:易受外部环境影响,提高了系统复杂性。

    var arr = [1, 3, 5, 6];
    arr.splice(0,1) ==> [1]
    arr.splice(0,1) ==> [3]
    var b = 34;
    function add(a) {
      return a + b;
    }

纯函数是函数编程的基础,那么如何将非纯函数转化为纯函数呢?


2. 函数柯里化(curry)

简单的定义就是:将一个低阶函数转化为高阶函数的过程被称之为柯里化。
这样说未免有点不太清楚,就是将一个需要传入多个参数的函数转化为多个只需要传入一个参数的函数。

function (arg1, arg2, arg3) ==> function(arg1)(arg2)(arg3)
      
function add(a, b){
      return a+b
 }
add(1,2)

function add(a) {
   return function(b){
       return a+b;
   }
}
add(1)(2)

这样一看是不是就清楚的多了,其中有提到一个概念高阶函数,那么什么是高阶函数呢? 高阶函数: "Higher-order function",js中的函数都是指向某个变量的,那么同样可以指向某个函数,同理,也可以将某个函数作为返回值,返回。

所谓的高阶函数,就是可以接受一个函数为参数或返回一个函数的函数。

var arr = [1,2,34]
arr.map(function(item, index){
   return item*2
})
      
function add(a, b, fn){
   return fn(a) + fn(b)
}

3. 声明式语句 && 命令式语句

顾名思义,命令式语句是,一步一步的指令,告诉你要怎么做,而声明式语句,则是只需要说要什么,具体怎么做,你自己看着办

//命令式:
var arr = [1, 2, 4, 5],result = [];
for(var i = 0; i< arr.length; i++) {
   result.push(arr[i])
}
  
//声明式:
var result = arr.map(function(item){return item})
//从这两个例子,就可以清楚的看到命令式语句和声明式语句的区别了

通过上面的内容,已经对js函数化编程有了一个较为基础的浅显的认识,至于更深层次的认识,就需要看看其他大佬的文章了。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/5865

相关推荐

在线运行编程网站

学编程的程序员小伙伴越来越多了,在学习的过程中会发现很多知识点如果不在工作中运用或者手写带验证的话,很容易忘记。任何技能的掌握都是需要不断练习的。在此整理一些在线运行编程的网站。

前端的编程软件哪些比较好用?

推荐8款最好用的前端开发工具供美工或者前端开发人员使用,当然若你是NB的全栈工程师也可以下载使用。Web前端开发最常见的编程软件有以下几种: 在前端开发中,有一个非常好用的工具,Visual Studio Code,简称VS code

程序员的笔记,编程写软件学到的 7 件事

如果你真的做出了一些东西,在面对那些令人眼花缭乱的理论知识,或是和你相似甚至比你做的更糟糕的人时大可不必谦虚。在一天结束之时,正是那些在战壕中的开发者——构建、测试和开发了代码的人,真正做了事情。

十大编程语言榜单

如果你是软件开发领域的新手,那么你会想到的第一个问题是“如何开始?”编程语言有数百种可供选择,但是你怎么发现哪个最适合你,你的兴趣和职业目标又在哪里呢?选择最佳编程语言以学习的最简单方法之一,是通过市场反响、技术趋势的发展…

Blockly - 来自Google的可视化编程工具

Google Blockly 是一款基于Web的、开源的、可视化程序编辑器。你可以通过拖拽块的形式快速构建程序,而这些所拖拽的每个块就是组成程序的基本单元。可视化编程完成

感觉自己不适合做程序员,什么样的人不适合做程序员?

学习是一件艰苦的事情。很多人想要成为程序员,在学习编程的过程中,面对各种 bug 和源源不断的问题,有时会对自己是否适合编程这一问题产生困扰。在教学的过程中,他总结出了不适合做程序员的十个特征

CSS并不是真正的编程语言

每隔几个月就会出现一篇文章表明:CSS并不是真正的编程语言。以编程语言的标准来说,CSS过于困难。使用这门语言会很有创造性:事实确实如此,CSS不同于传统的编程,且具有缺陷,同任何标准化编程语言相比

自学编程的网站有那些?

如今,很大一部分人在学习编程的道路上都选择自学,但都苦于找不到适合自己的学习资源,今天为大家介绍11个免费的自学编程的网站,为大家提供一些帮助。很多人自学编程,都会通过w3school,你可以通过它学习所有的网站建设基础教程

无码编程:无代码软件开发大行其道

代码是大多数软件程序和应用程序的骨干。每行代码充当一条指令:采用一种逐步性的逻辑机制,以便计算机、服务器和其他机器执行操作。想创建那些指令,就要知道如何编写代码,这项宝贵的技能有时很吃香。

自学编程的六个技巧总结

这些事情可以帮助新手在他们漫长的旅程中学习编程。我知道我还有更多东西需要学习,并将继续学习如何永远地学习。最重要的事情说三遍,请继续,不要放弃,不要放弃,不要放弃。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!