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数据缓存功能的实现思路及简单模拟
May 27 Javascript
JavaScript Array对象扩展indexOf()方法
May 09 Javascript
angularJS中router的使用指南
Feb 09 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
AngularJs Javascript MVC 框架
Jun 20 Javascript
AngularJs ng-route路由详解及实例代码
Sep 14 Javascript
JS匹配日期和时间的正则表达式示例
May 12 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
Jun 07 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
详解Vue.js 响应接口
Jul 04 Javascript
Vue 样式切换及三元判断样式关联操作
Aug 09 Javascript
原生jQuery实现只显示年份下拉框
Dec 24 jQuery
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
3.从实例开始
2006/10/09 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
JavaScript中的闭包
2016/02/24 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
js初始化验证实例详解
2016/11/26 Javascript
jquery广告无缝轮播实例
2017/01/05 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
详解Vue中的watch和computed
2020/11/09 Javascript
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
元旦晚会活动总结
2014/07/09 职场文书
五好家庭事迹材料
2014/12/20 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
vue实现锚点定位功能
2021/06/29 Vue.js