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 21 Javascript
浅谈javascript的数据类型检测
Jul 10 Javascript
js判断鼠标同时离开两个div的思路及代码
May 31 Javascript
jquery.ui.draggable中文文档(原文翻译)
Nov 15 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
Jan 26 Javascript
基于vue.js实现图片轮播效果
Dec 01 Javascript
JS实现的按钮点击颜色切换功能示例
Oct 19 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
layui的table中显示图片方法
Aug 17 Javascript
页面内锚点定位及跳转方法总结(推荐)
Apr 24 Javascript
Vue+Element-U实现分页显示效果
Nov 15 Javascript
html5 录制mp3音频支持采样率和比特率设置
Jul 15 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
php简单日历函数
2015/10/28 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
详解AngularJS脏检查机制及$timeout的妙用
2017/06/19 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
Python函数嵌套实例
2014/09/23 Python
python2.7到3.x迁移指南
2018/02/01 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
Python @property及getter setter原理详解
2020/03/31 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
linux比较文件内容的命令是什么
2015/09/23 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
团员的自我评价
2013/12/01 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
南京导游词
2015/02/03 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript