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下阻止表单重复提交、防刷新、防后退
Aug 17 Javascript
CSS JavaScript 实现菜单功能 改进版
Dec 09 Javascript
JavaScript中的私有/静态属性介绍
Jul 26 Javascript
js 浏览本地文件夹系统示例代码
Oct 24 Javascript
表格奇偶行设置不同颜色的核心JS代码
Dec 24 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
jQuery搜索同辈元素方法
Feb 10 Javascript
JavaScript性能优化总结之加载与执行
Aug 11 Javascript
微信小程序仿知乎实现评论留言功能
Nov 28 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
在微信小程序中使用mqtt服务的方法
Dec 13 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 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实现的随机广告显示代码
2007/06/14 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
javascript面向对象之二 命名空间
2011/02/08 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
Vue实现微信支付功能遇到的坑
2019/06/05 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
使用Python实现简单的服务器功能
2017/08/25 Python
详解Python3中的迭代器和生成器及其区别
2018/10/09 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
Pytorch释放显存占用方式
2020/01/13 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
python爬取youtube视频的示例代码
2021/03/03 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
Linux如何为某个操作添加别名
2015/02/05 面试题
《莫泊桑拜师》教学反思
2014/04/23 职场文书
消防志愿者活动方案
2014/08/23 职场文书
2014教师年度工作总结
2014/11/10 职场文书
2014年护理部工作总结
2014/11/14 职场文书
2019各种承诺书范文
2019/06/24 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python
Docker安装MySql8并远程访问的实现
2022/07/07 Servers