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 相关文章推荐
一些易混淆且不常用的属性,希望有用
Jan 29 Javascript
javascript 全角转换实现代码
Jul 17 Javascript
常用的jQuery前端技巧收集
Dec 24 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
浅析JS操作DOM的一些常用方法
May 13 Javascript
JavaScript DOM节点操作方法总结
Aug 23 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 jQuery
vue实现手机号码抽奖上下滚动动画示例
Oct 18 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
Jan 25 Javascript
JS画布动态实现黑客帝国背景效果
Nov 08 Javascript
Vue实现点击当前行变色
Dec 14 Vue.js
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数组去重复数据示例
2014/02/25 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
js获得地址栏?问号后参数的方法
2013/08/08 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
javascript折半查找详解
2015/01/26 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
理解JS事件循环
2016/01/07 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
Python去除列表中重复元素的方法
2015/03/20 Python
Python实现把数字转换成中文
2015/06/29 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
python实现超级玛丽游戏
2020/03/18 Python
python 如何区分return和yield
2020/09/22 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
师范应届生求职信
2013/11/15 职场文书
大一自我鉴定范文
2013/12/27 职场文书
大学生交通专业求职信
2014/09/01 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
Vue3中的Refs和Ref详情
2021/11/11 Vue.js
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript