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 相关文章推荐
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 Javascript
jQuery中读取json文件示例代码
May 10 Javascript
如何调试异步加载页面里包含的js文件
Oct 30 Javascript
JS交换变量的方法
Jan 21 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 Javascript
Bootstrap CSS布局之图像
Dec 17 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
Apr 24 jQuery
BootStrap入门学习第一篇
Aug 28 Javascript
JavaScript实现构造json数组的方法分析
Aug 17 Javascript
JavaScript基于数组实现的栈与队列操作示例
Dec 22 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
Jul 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
我的php学习笔记(毕业设计)
2012/02/21 PHP
php微信开发接入
2016/08/27 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
使用python实现strcmp函数功能示例
2014/03/25 Python
Python入门篇之文件
2014/10/20 Python
python中zip和unzip数据的方法
2015/05/27 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
如何在sublime编辑器中安装python
2020/05/20 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
教师党性分析材料
2014/02/04 职场文书
一体化教学实施方案
2014/05/10 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
语文课外活动总结
2014/08/27 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
用几道面试题来看JavaScript执行机制
2021/04/30 Javascript
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android
vue使用echarts实现折线图
2022/03/21 Vue.js