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 相关文章推荐
改版了网上的一个js操作userdata
Apr 27 Javascript
js模拟select下拉菜单控件的代码
May 08 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
Feb 26 Javascript
SyntaxHighlighter 3.0.83使用笔记
Jan 26 Javascript
详谈javascript中的cookie
Jun 03 Javascript
常见JS验证脚本汇总
Dec 01 Javascript
Eclipse引入jquery报错如何解决
Dec 01 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
详解JavaScript中的自定义事件编写
May 10 Javascript
Vue表单实例代码
Sep 05 Javascript
React.js绑定this的5种方法(小结)
Jun 05 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
Aug 05 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
php skymvc 一款轻量、简单的php
2011/06/28 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
JavaScript中的关键字&quot;VAR&quot;使用详解 分享
2013/07/31 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
Vue2递归组件实现树形菜单
2017/04/10 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
puppeteer库入门初探
2019/01/09 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
python实现小球弹跳效果
2019/05/10 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Django 自定义分页器的实现代码
2019/11/24 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
浅谈Python协程
2020/06/17 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
代理商会议邀请函
2014/01/27 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL