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 相关文章推荐
Tab页界面,用jQuery及Ajax技术实现
Sep 21 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
Feb 26 Javascript
提升你网站水平的jQuery插件集合推荐
Apr 19 Javascript
JavaScript中“基本类型”之争小结
Jan 03 Javascript
重构Javascript代码示例(重构前后对比)
Jan 23 Javascript
使用命令对象代替switch语句的写法示例
Feb 28 Javascript
jquery调整表格行tr上下顺序实例讲解
Jan 09 Javascript
Javascript动画效果(2)
Oct 11 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
如何实现小程序tab栏下划线动画效果
May 18 Javascript
Element Collapse 折叠面板的使用方法
Jul 26 Javascript
解决vue+elementui项目打包后样式变化问题
Aug 03 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
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
浅析JS运动
2015/12/28 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
对Python中内置异常层次结构详解
2018/10/18 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
解释一下Windows的消息机制
2014/01/30 面试题
Ruby如何创建一个线程
2013/03/10 面试题
工厂保洁员岗位职责
2013/12/04 职场文书
学生励志演讲稿
2014/01/06 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
儿园租房协议书范本
2014/12/02 职场文书