JavaScript函数式编程(Functional Programming)声明式与命令式实例分析


Posted in Javascript onMay 21, 2019

本文实例讲述了JavaScript函数式编程(Functional Programming)声明式与命令式。分享给大家供大家参考,具体如下:

函数式编程属于声明式编程(declarative programming)的范畴,经常跟声明式编程一块儿讨论的是命令式编程(imperative programming),因为它们是两种不太一样的风格。

命令式编程一般就是说清楚具体要怎么样得到一个结果:先这样做,再这样做,然后再这样,如果这样,就这样做 … 声明式编程就是声明(说明)一下你想得到的结果是什么样的:把这组电影里的平均分大于 9 分的电影过滤出来给我。

比如有一组电影,你想过滤出评分 9 分以上的电影。

let movies = [
 { title: 'The Shawshank Redemption', rating: 9.6 },
 { title: 'Forrest Gump', rating: 9.4 },
 { title: 'Roman Holiday', rating: 8.9 }
]

命令式:

const imperativeMovieFilter = (movies) => {
 let result = []
 for (let i = 0; i < movies.length; i++) { 
  if (movies[i].rating >= 9) {
   result.push(movies[i])
  }
 }
 return result
}

在函数里面,先来个 result,让它等于一个空白的数组。然后我们又 for 循环,去处理 movies ,循环的时候判断当前项目里的评分(rating)是不是大于等于 9,如果是的话,就把这个项目放到 result 里面。循环完成以后,会返回处理之后的结果。命令式编程里,详细的说明了得到结果需要做的每个操作。

声明式:

const declarativeMovieFilter = (movies) => {
 return movies.filter((movie) => movie.rating >= 9)
}

在上面这个函数里,我们只是说明了一下,自己想要的结果是什么样的,就是评分在 9 分以上的电影。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript setTimeout和setInterval 的区别
Dec 08 Javascript
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
css样式标签和js语法属性区别
Nov 06 Javascript
JS删除字符串中重复字符方法
Mar 09 Javascript
js模仿php中strtotime()与date()函数实现方法
Aug 11 Javascript
js+css实现超简洁的二级下拉菜单效果代码
Sep 07 Javascript
javascript 广告移动特效的实现代码
Jun 25 Javascript
Ubuntu系统下Angularjs开发环境安装
Sep 01 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
Apr 24 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
Aug 18 jQuery
angular.js4使用 RxJS 处理多个 Http 请求
Sep 23 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
JS判断数组里是否有重复元素的方法小结
May 21 #Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
May 21 #Javascript
vue路由守卫+登录态管理实例分析
May 21 #Javascript
vue实现跨域的方法分析
May 21 #Javascript
vue动态绑定class的几种常用方式小结
May 21 #Javascript
express启用https使用小记
May 21 #Javascript
使用express获取微信小程序二维码小记
May 21 #Javascript
You might like
操作Oracle的php类
2006/10/09 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
python flask 多对多表查询功能
2017/06/25 Python
python try 异常处理(史上最全)
2019/03/07 Python
python 变量初始化空列表的例子
2019/11/28 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
初中生学习生活的自我评价
2013/11/20 职场文书
公路绿化方案
2014/05/12 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
2015年班组长工作总结
2015/04/10 职场文书
民间借贷借条如何写
2015/05/26 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript