JavaScript Functional Programming:声明式与命令式
来源:互联网 发布:反淘宝联盟2015 编辑:程序博客网 时间:2024/05/16 02:14
函数式编程属于声明式编程(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 分以上的电影。
阅读全文
0 0
- JavaScript Functional Programming:声明式与命令式
- Functional Programming函数式编程
- 函数式编程Functional Programming
- JavaScript Functional Programming:纯函数
- 函数式编程(Functional Programming)
- 函数式编程(functional programming)学习总结
- python函数式编程(Functional Programming)
- ReactiveCocoa与Functional Reactive Programming
- ReactiveCocoa与Functional Reactive Programming
- ReactiveCocoa与Functional Reactive Programming
- ReactiveCocoa与Functional Reactive Programming
- ReactiveCocoa与Functional Reactive Programming
- ReactiveCocoa与Functional Reactive Programming
- ReactiveCocoa与Functional Reactive Programming
- ReactiveCocoa与Functional Reactive Programming
- ReactiveCocoa与Functional Reactive Programming
- 函数式编程( Functional)与命令式编程( Imperative)对比
- JavaScript Functional Programming:箭头函数 Arrow functions
- Spring 深入浅出核心技术 (一)
- Spring学习(四)
- Failed to parse json Unexpected token '\u0000' at 1:1
- spring-cloud-eureka (二) Client
- Pyhton爬虫实战
- JavaScript Functional Programming:声明式与命令式
- CountDownLatch理解一:与join的区别
- 异常:illegal to have multiple occurrences of 'contentType' with different values
- 【深度学习 tensorflow】Mac OS安装TensorFlow
- Ant Design无法引入CSS文件解决方案
- 封装获取浏览器宽高
- 如何防范DOS/DDos攻击
- 年度目标进度和完成进度对比
- maven环境下的ssm架构的pom.xml文件