位置: 编程技术 - 正文

Javascript函数式编程简单介绍(javascript中函数)

编辑:rootadmin

推荐整理分享Javascript函数式编程简单介绍(javascript中函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript 函数,js函数详解,javascript函数用法,js函数详解,javascript中的函数该如何理解,javascript 函数,js函数详解,javascript 函数,内容如对您有帮助,希望把文章链接给更多的朋友!

几十年来,函数式编程一直是计算机科学狂热者的至爱,由于数学的纯洁性和谜一般的本质, 它被埋藏在计算机实验室,只有数据学家和有希望获得博士学位的人士使用。但是现在,它正经历一场复兴, 这要感谢一些现代语言比如Python,Julia,Ruby,Clojure以及——但不是最后一个——Javascript。

你是说Javascript?这个WEB脚本语言?没错!

Javascript已经被证明是一项长期以来都没有消失的重要的技术。这主要是由于它扩展的一些框架和库而使其具有重生的能力, 比如backbone.js,jQuery,Dojo,underscore.js等等。这与Javascript函数式编程语言的真实身份直接相关。 对Javascript函数式编程的理解很重要,并且在相当长的一段时间会对各种水平的程序员很有用。

为什么呢?函数式编程非常强大、健壮并且优雅。它对于大型数据结构非常有用并且高效。 Javascript作为一个客户端脚本语言,在应对日益复杂的网站时,函数式地操作DOM、 组织API响应以及完成一些其它任务会非常有好处。

在这本书里,你将会学习用Javascript进行函数式编程所需要知道的一切:如何用函数式编程构建你的Javascript web应用, 如何解锁Javascript隐藏的力量,如何编写更强大的代码,并且由于程序更小,使得代码更容易维护,能够更快被下载, 并且花费更少的开支。你还会学到函数式编程的核心概念,以及如何将它们应用到Javascript, 还有将Javascript作为函数式语言时如何回避一些问题,如何在Javascript中混合使用函数式编程和面向对象编程。

不过在我们开始前,先来做个实验。

例子

也许快速举个例子是介绍Javascript函数式编程最好的方式。我们将用Javascript完成一些任务—— 一个使用传统、原生的方法,另一个使用函数式编程。然后我们将会比较这两种方法。

应用——一个电子商务网站

为了追求真实感,我们来做一个电子商务网站,一个邮购咖啡豆的公司。这个网站会销售好几种类型的咖啡, 有不同的品质,当然也有不同的价格。

命令式方法

首先,我们开始写程序。为了让这个例子接地气,我们需要创建一些对象来保存数据。如果需要的话我们可以从数据库里取值。 但是现在我们假设他们是静态定义的:

Javascript函数式编程简单介绍(javascript中函数)

如你所见,这个代码非常基础。如果现在有更多的咖啡种类而不只是这三个改怎么办?如果有个,甚至个? 如果有更多的size呢?如果有有机和无机之分呢?这将会很快将代码量变得巨大无比!

采用这种方法,我们让机器去打印每一种咖啡类型和每一个size。这就是采用这种命令式方法的基本问题。

函数式编程

命令式的代码一步一步地告诉电脑需要做什么来解决问题,相反,函数式编程追求用数学方式来描述问题, 其余的交给电脑来做。

通过更函数式一些的方式,同样的应用可以这样来写:

首先需要明确的是这个代码更加模块化了。现在新增一种size或者信新增一个咖啡种类就像下面的代码这样简单:

咖啡对象的数组和size对象的数组混合(mix)到了一起,也就是他们的方法和成员变量被组合到了一块儿 ——通过一个叫“plusMinxin”的自定义函数(详见第七章)。这些咖啡类型的类(columbian, frenchRoast, decaf)包含了成员变量, 而这些size对象(small, medium, large)包含了获取名称和计算价格的方法。 ”混合”(minxing)这个动作通过一个map操作来起作用,也就是对数组中的每一个成员执行一个纯函数并返回一个新的函数, 然后这些返回的函数被放到了一个reduce函数中被操作,reduce也是一个高阶函数,和map有些像, 只是reduce把数组里的所有元素处理后组合到了一个东西里面。最终,新的数组包含了所有可能的种类和size的组合, 这个数组通过forEach方法遍历,forEach也是一个高阶函数,它会让数组里面每一个对象作为参数执行一遍回调函数。 在这个例子里,这个回调函数是一个匿名函数,它获取这些对象后,以对象的getPrice()和getLabel() 两个方法的返回值作为参数调用printPrice函数。

实际上,我们可以让这个例子更加函数式:去掉coffees变量,并将函数串到一起链式调用,这也是函数式编程的一个小技巧。

这样,控制流没有像命令式代码那样从头到尾的顺序进行。在函数式编程里,map函数和其它高阶函数代替了for和while循环, 只有少量关键的代码是在顺序执行。 这使得新接触的人在阅读这样范式的代码有些困难,但是一旦你能够欣赏它,你就会发现这根本没啥难的, 而且这样写看起来更好。

这个例子仅仅是刚开始展露Javascript中函数式编程能做什么。通过这本书,你将会看到更多函数式实现的强悍的例子。

总结

首先,采用函数式风格的优点已经明确了。 其次,不要害怕函数式编程。的确,它往往被认为是编程语言的纯逻辑形式,但是我们不需要理解lambda演算也能够在日常任务中应用它。 实际上,通过把我们的程序拆分成小的片段,它们变得更容易被理解、维护,也更加可靠。 map和reduce函数是Javascript中不太被知道的内建函数,然而我们将要关注它们。

Javascript是一个脚本语言,可交互,易使用,不需要编译。我们甚至不需要下载任何开发软件, 你最喜欢的浏览器就可以作为开发环境的解释器。

感兴趣吗?好,我们开始!

Javascript函数式编程语言 函数式编程语言函数式编程语言是那些方便于使用函数式编程范式的语言。简单来说,如果具备函数式编程所需的特征,它就可以被称为函数式语言。

深入探讨javascript函数式编程 有时,优雅的实现是一个函数。不是方法。不是类。不是框架。只是函数。-JohnCarmack,游戏《毁灭战士》首席程序员函数式编程全都是关于如何把一个

javascript函数式编程程序员的工具集 如果你仔细看了到目前为止出现过的示例代码,你会发现这里面的一些方法不太熟悉。它们是map()、filter()和reduce()函数,它们对任何语言的函数式编程

标签: javascript中函数

本文链接地址:https://www.jiuchutong.com/biancheng/380308.html 转载请保留说明!

上一篇:JS+DIV+CSS排版布局实现美观的选项卡效果(js布局与css布局)

下一篇:Javascript函数式编程语言(js函数的使用规则)

  • 企业所得税从业人数怎么填,依据什么填写
  • 应税工资怎么计算出来的
  • 收到稳岗补贴怎么做会计分录小企业会计准则
  • 出口货物的报关时限为装货的24小时以前
  • 小规模纳税人资产负债表和利润表
  • 在项目地预缴税款有哪些税种
  • 支付安全生产费怎么入账
  • 购进货物的发票是外来凭证吗
  • 上年城市维护建设税退税怎么记账
  • 应收账款待转销和应交税费待转销
  • 企业城建税教育费附加和地教费的税率是多少
  • 丢失海关专用缴款书后该怎么处理其相关会计分录
  • 年终零余额账户有余额
  • 商业承兑到期对方不付款如何起诉
  • 基建账的年终结转
  • 什么费用需要进行摊销
  • 企业设备安装发票税率为多少?
  • 企业购车票可以抵扣增值税吗?
  • 南方建筑主编
  • 烟草生产者消费税计算方法
  • 土地的契税和印花税记入什么科目
  • 小微企业必须给员工缴纳哪些保险
  • 企业核算方法
  • 预付款增加说明什么
  • 外贸企业增值税发票需要认证吗
  • 地毯属于什么类别垃圾分类
  • 现金流量表的编制原则为( ),是( )的概念
  • 公司注销时债权债务怎么处理
  • 无票业务如何处理
  • 公司向银行贷款利息是多少
  • 浏览器备份文件在哪里
  • 停工期间的各项工作包括
  • php缓存机制有哪些
  • thinkphp5框架介绍
  • 企业收到政府出资款交增值税
  • 变更营业执照中心怎么改
  • postman如何设置token
  • php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
  • 陆家嘴金融贸易区管委会主任
  • 善意取得虚开增值税专用发票处理
  • 已计提的存货跌价准备计入成本吗
  • mmdetection ValueError: need at least one array to concatenate解决方案
  • shc命令
  • php 重写 重载
  • 红冲上年度收入怎么做凭证
  • 未记账凭证怎么变成已记账凭证
  • 企业成本核算应遵循
  • 逾期未收回包装物押金会计分录
  • 完税价格和实际价格
  • 企业单方面调整员工的工作岗位
  • python中chr函数介绍
  • 织梦使用手册
  • PostgreSQL分区表(partitioning)应用实例详解
  • 公司处置汽车
  • 兼职劳务报酬税率
  • 小规模纳税人企业所得税税收优惠政策
  • 小型微利企业是小微企业吗
  • 已认证发票是否已抵扣
  • 跨期发票账务处理办法
  • 结转销售成本的分录
  • 自己开发自己施工
  • 其他应付款二级科目有哪些
  • 企业如何设置预缴税款
  • 进项税和销项税抵扣的会计分录
  • 其他应收款有没有备抵科目
  • mssql导出数据库
  • sql游标用法
  • 偷天换日角色介绍
  • windows8使用技巧
  • windows7手动更新
  • win10更新后有线网络无法使用
  • opengl 顶点
  • extjs两个tbar问题探讨
  • css教程推荐
  • node 连接sqlserver
  • jquery.ztree中文api
  • 领导班子和领导干部年度考核
  • 北京环球影城服装
  • 全国砂石供应紧缺
  • 全国初中应用物理知识竞赛获奖名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设