当前位置: 首页 > 编程笔记 >

JavaScript函数式编程(Functional Programming)声明式与命令式实例分析

相弘方
2023-03-14
本文向大家介绍JavaScript函数式编程(Functional Programming)声明式与命令式实例分析,包括了JavaScript函数式编程(Functional Programming)声明式与命令式实例分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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中的一等对象,这意味着可以把函数像其它值一样传递。 一个常见的用法是把匿名函数作为回调函数传递到异步函数中。 函数声明 function foo() {} 上面的方法会在执行前被 解析(hoisted),因此它存在于当前上下文的任意一个地方, 即使在函数定义体的上面被调用也是对的。 foo(); // 正常运行,因为foo在代码运行前已经被创建 function foo

  • 本文向大家介绍javascript函数声明和函数表达式区别分析,包括了javascript函数声明和函数表达式区别分析的使用技巧和注意事项,需要的朋友参考一下   平时再用js写函数的时候,一般都是以惯例 function fn () {} 的方式来声明一个函数,在阅读一些优秀插件的时候又不免见到 var fn = function () {} 这种函数的创建,究竟他们用起来有什么区别呢,今天就本

  • 问题内容: 我有基于Web的编程(php,jsf等)的背景,并且带有swing和swt的背景很少。 目前,我正在寻找用于新桌面应用程序的java fx 2.x,并且我想了解有关构建实际GUI的最佳实践。我可以使用fxml进行声明式路由,也可以采用过程式路由。目前,为了进行快速原型制作,我正在使用后者,但我想知道是否有令人信服的理由使用fxml。 更新 最后,我为一个中等规模的项目使用了FXML路线

  • 我试图将我的编程风格从命令式切换到声明式,但有一些概念困扰着我,比如当涉及到循环时的性能。例如,我有一个原始数据,在操作它之后,我希望得到3个预期结果:itemsHash、namesHash、rangeItemsHash 为了达到预期的结果,命令式只循环一次,而声明式至少循环3次(、、)。哪一个比较好?在性能上有什么权衡吗?

  • 我试图在声明性和命令式配置的混合中设置(J)缓存,因为JCache标准没有提供限制缓存可以占用的最大大小的方法。我想尽可能地“独立于提供者”,这样我将来就可以灵活地更改提供者。目前我有使用Java7的限制,所以我相信咖啡因被丢弃了。 我在应用程序中保留了缓存列表和它们条目的持续时间(TTL)。yaml,这是我用属性加载器得到的。然后,我用以下代码创建缓存: 无论我在POM中使用哪个JCache提供

  • 本文向大家介绍浅谈javascript函数式编程,包括了浅谈javascript函数式编程的使用技巧和注意事项,需要的朋友参考一下 函数式编程,属于编程范式的一种 1 函数是第一公民,可以返回值,也可以作为其他函数的参数 2 接近自然语言的写法   晓池吃完饭然后就去洗澡 可以表现为eat().bathe()  3 函数式编程的特性   匿名函数,即没有名字的函数,在函数式编程中很常见,有时候我们