函数式编程属于声明式编程(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 分以上的电影。

————————————————
版权声明:本文为CSDN博主「longzhoufeng」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/longzhoufeng/article/details/78802836

最新文章

  1. NOI 题库 8465
  2. win10 用cmake 3.5.2 和 vs 2015 update1 编译 GPU版本(cuda 8.0, cudnn v5 for cuda 8.0)
  3. 高级Linux SA需要会做的事情
  4. Win7 64位 VS2015环境使用SDL2-2.0.4
  5. [转载]MongoDB开发学习 经典入门
  6. Linux mpstat字段解析
  7. 出现upstream sent too big header while reading response header from upstream错误
  8. Vue.js学习 Item13 – 指令系统与自定义指令
  9. 并行计算基础&amp;amp;编程模型与工具
  10. 更改DataTable列名方法
  11. Struts2 学习笔记18 拦截器原理分析
  12. hdu 1559 最大子矩阵(DP)
  13. Swift中的as操作符
  14. 日常问题181101: ueditor文本编辑器
  15. linux 邮件服务器—Extmail
  16. 使用yield返回IEnumber&lt;T&gt;集合
  17. 阿里云3台机器组成集群配置ssh免密码登陆
  18. (网络编程)socketserver模块服务端实现并发
  19. C#字符串string以及相关内置函数
  20. Django 改变xadmin后台英文为中文

热门文章

  1. HTML的BODY内标签介绍
  2. Bash基础——printf
  3. vue---子调父 $emit (把子组件的数据传给父组件)
  4. python----print线程安全问题
  5. synchronized关键字所生成的字节码详细分析
  6. unittest(一)IDE导出的代码分析
  7. Listener中@Autowired无法注入的问题
  8. HDU-1465-不容易系列之一(容斥)
  9. POJ-2478-Farey Sequence(欧拉函数)
  10. Time Intersection