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 相关文章推荐
JavaScript网页制作特殊效果用随机数
May 22 Javascript
node.js中实现同步操作的3种实现方法
Dec 05 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
Sep 07 Javascript
详解Webpack + ES6 最新环境搭建与配置
Jun 04 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
Jul 13 Javascript
对vue 键盘回车事件的实例讲解
Aug 25 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
Sep 21 Javascript
ES6基础之默认参数值
Feb 21 Javascript
webpack 最佳配置指北(推荐)
Jan 07 Javascript
微信小程序连续签到7天积分获得功能的示例代码
Aug 20 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 字符串函数收集
2010/03/29 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
pygame学习笔记(5):游戏精灵
2015/04/15 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Python实现元素等待代码实例
2019/11/11 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
幼儿教育感言
2014/02/05 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
2014年标准化工作总结
2014/12/17 职场文书
2014年政工师工作总结
2014/12/18 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
nginx搭建NFS网络文件系统
2022/04/14 Servers