【视频】- 5分钟学习<函数式编程>

温馨提示:视频请点此观看

// 视频文字版:

JavaScript 函数式编程是一个存在了很久的话题,

现在ES6语法对于函数式编程更为友好,所以开始变的更加火热。

函数式编程可以理解为,以函数作为主要载体的编程方式,用函数去拆解、抽象一般的表达式,好处主要有以下几点:

1、语义更加清晰

2、可复用性更高

3、可维护性更好

4、作用域不会污染命名空间

现在来看一个基本的函数式编程,目标是把每个单词的首字母变为大写,

从上面的例子可以看出,函数式编程的特征,

1、每个函数只做一件事;

2、每个函数只接收一个参数;

3、每个函数只返回一个结果;

好处是,结果是可预期的,且易于调试;

坏处是,很容易出现横向的多层嵌套。

就像下面这样,

//计算1,2,3,4相加之和

当然了,一般不会这样写,这只是极端表现。但客观上来看,函数式编程确实有可能出现这种情况。

上述情况的优化,可以采用“链式调用”来解决,

这样改写后,结构会整体变得比较清晰,而且链式调用的每一环在做什么也可以很容易的展现出来。

但随着项目的进行,代码量的增加,业务的复杂度不断上升,各种回调的存在 ,会使代码的嵌套层数不断增加。

这时更好的办法,就是Promise的链式结构,看下面这个例子,

它能够做到在代码高度复杂的情况下,依然保持代码层次的清晰,就像这样的。

扩展阅读:

大白话 Promise,这到底是干啥用的?

原文发布于微信公众号 - web前端教室(webfeel)

原文发表时间:2017-12-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏海纳周报

【第四期】GC专题

我在某个技术群里发现很多人对GC的问题是最多的。确实,由于Java的GC经常会刷存在感(例如占用大量的CPU时间,full gc时直接失去响应),GC的问题就成...

3559
来自专栏韩伟的专栏

基于对象和面向对象

“基于对象”是“面向对象”一次动态化变迁,它依赖于现代语言的动态特性,让方法和属性统一起来;用组合取代继承;以函数对象查找取代多态的方法调用。这些变化让面向对象...

1.3K0
来自专栏后端沉思录

回调函数

什么是回调函数,上面的问题说的是不是很空洞,不是太形象,下面是知乎上的一位网友给的答案:

1042
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-day08-超市购物系统总结

Java基础-day08-超市购物系统总结 超市购物小票——自定义类 1案例介绍与演示 将超市购物小票案例中零散数据(名称、货号、单价、计价单位等)封装为货物对...

4346
来自专栏Python小屋

微课系列(四):Python中map对象的几种用法和注意事项

在Python中,map、filter、enumerate、zip、reversed等对象除了惰性求值之外,还有个共同的特点是“其中的元素只能使用一次”,这一点...

752
来自专栏杨建荣的学习笔记

对一道if-else相关的程序题的简单分析(r5笔记第45天)

今天同事在微信群里提出了一个问题,看似是一个面试题。 大体的意思就是补充下面if条件使得输出 Hello World if(){ System.out.prin...

3535
来自专栏青玉伏案

代码重构(四):条件表达式重构规则

继续更新有关重构的博客,前三篇是关于类、函数和数据的重构的博客,内容还算比较充实吧。今天继续更新,本篇博客的主题是关于条件表达式的重构规则。有时候在实现比较复杂...

1949
来自专栏C语言及其他语言

第一个 C 语言编译器是怎样编写的?

作者: 伯乐在线 - Chaobs 网址: http://blog.jobbole.com/94311/ 首先向C语言之父Dennis Ritchie致敬! ...

3539
来自专栏王亚昌的专栏

C++多线程编程学习二 [类中封装互斥量的设计]

      之前我也提到过,如果一个类的数据成员中在多线程环境中可能会被竞争使用时,一定要在类中解决这个问题,而不是在代码编写过程中在每次使用时去申请或释放,这...

711
来自专栏Python区块链

人工智能实现程序员“防”BOSS?刷脸就发短信,8行代码人脸报警

如今一个攻城狮就能搞定人脸的深度进修算法,这要多感激打动国外开源框架,虽然达不到旷世face++和诸多人脸公司的深度,可是实际应用已经没有太大压力。下图就是te...

45012

扫码关注云+社区