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 相关文章推荐
jquery 应用代码 方便的排序功能
Feb 06 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
Apr 27 Javascript
jQuery 对Select的操作备忘记录
Jul 04 Javascript
js判断手机和pc端选择不同执行事件的方法
Jan 30 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
May 18 Javascript
js操作cookie保存浏览记录的方法
Dec 25 Javascript
AngularJS手动表单验证
Feb 01 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
May 11 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
浅谈React碰到v-if
Nov 04 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
详解vuex之store源码简单解析
Jun 13 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
prototype 的说明 js类
2006/09/07 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
Angular2.js实现表单验证详解
2017/06/23 Javascript
Vue 多层组件嵌套二种实现方式(测试实例)
2017/09/08 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
2017/11/27 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Python中int()函数的用法浅析
2017/10/17 Python
谈谈python中GUI的选择
2018/03/01 Python
python实现excel读写数据
2021/03/02 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
python读取与处理netcdf数据方式
2020/02/14 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
Final类有什么特点
2012/04/25 面试题
物业保安员岗位职责制度
2014/01/30 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
运动会横幅标语
2014/06/17 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书