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 相关文章推荐
一段实现页面上的图片延时加载的js代码
Feb 11 Javascript
js 第二代身份证号码的验证机制代码
May 12 Javascript
js 鼠标移动显示图片的简单实例
Dec 25 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
Nov 12 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
JS 清除字符串数组中,重复元素的实现方法
May 24 Javascript
jQuery与js实现颜色渐变的方法
Dec 30 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
Jan 01 Javascript
angular中ui calendar的一些使用心得(推荐)
Nov 03 Javascript
JavaScript链式调用实例浅析
Dec 19 Javascript
详解React 条件渲染
Jul 08 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实现递归与无限分类的方法
2015/02/16 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
2013/04/12 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
2016/06/14 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
Python assert语句的简单使用示例
2019/07/28 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
Django使用rest_framework写出API
2020/05/21 Python
python如何设置静态变量
2020/09/07 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
董事长助理岗位职责
2014/02/18 职场文书
消防安全宣传口号
2014/06/10 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书