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 学习之一 对象访问
Nov 23 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
Mar 14 Javascript
在JavaScript中使用timer示例
May 08 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
Jan 05 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
vue-resource 拦截器(interceptor)的使用详解
Jul 04 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 Javascript
Vue 中 a标签上href无法跳转的解决方式
Nov 12 Javascript
JavaScript 装逼指南(js另类写法)
May 10 Javascript
原生JS生成指定位数的验证码
Oct 28 Javascript
js正则匹配markdown里的图片标签的实现
Mar 24 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令牌 Token改进版
2008/07/18 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
js+div实现文字滚动和图片切换效果代码
2015/08/27 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
什么是数组名
2012/05/10 面试题
幼儿园中班新学期寄语
2014/01/18 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
九年级科学教学反思
2014/01/29 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
介绍信模板
2015/01/31 职场文书
小学端午节活动总结
2015/02/11 职场文书
2015年护士节慰问信
2015/03/23 职场文书
学校运动会简讯
2015/07/20 职场文书
2016秋季校长开学典礼致辞
2015/11/26 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书