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 数字转换研究总结
Dec 26 Javascript
jQuery的load()方法及其回调函数用法实例
Mar 25 Javascript
jQuery构造函数init参数分析续
May 13 Javascript
常用javascript表单验证汇总
Jul 20 Javascript
基于jquery实现省市联动效果
Nov 23 Javascript
Node.js实现数据推送
Apr 14 Javascript
原生JS下拉加载插件分享
Dec 26 Javascript
AngularJS获取json数据的方法详解
May 27 Javascript
Angular4表单验证代码详解
Sep 03 Javascript
JavaScrip数组删除特定元素的几种方法总结
Sep 06 Javascript
Angular4的输入属性与输出属性实例详解
Nov 29 Javascript
关于Vue源码vm.$watch()内部原理详解
Apr 26 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
php 结果集的分页实现代码
2009/03/10 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
sina的lightbox效果。
2007/01/09 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
python tornado使用流生成图片的例子
2019/11/18 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
自我鉴定四大框架
2014/01/17 职场文书
迎新晚会主持词
2014/03/24 职场文书
安全宣传标语口号
2014/06/06 职场文书
中央空调节能方案
2014/06/15 职场文书
计算机求职信
2014/07/02 职场文书
端午节活动总结报告
2015/02/11 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
Python制作表白爱心合集
2022/01/22 Python