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

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

// 视频文字版:

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

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

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

1、语义更加清晰

2、可复用性更高

3、可维护性更好

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

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

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

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

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

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

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

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

就像下面这样,

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

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

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

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

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

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

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

扩展阅读:

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

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

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏韩伟的专栏

OO玩法:基于对象

“基于对象”的特点 什么是“基于”对象呢?就是关注“对象之间”的关系,而不是关注对象和类的关系。“面向对象编程”(OOP)的概念已经诞生了很多年,在业界可谓深入...

3404
来自专栏noteless

创建型设计模式对比总结 设计模式(八)

比如,一个静态方法,根据参数进行if else判断,或者switch选择进而确定需要创建的对象类型 

1403
来自专栏韩伟的专栏

基于对象和面向对象

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

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

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

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

5296
来自专栏青玉伏案

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

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

2049
来自专栏斑斓

使用Option的正确姿势

我们会频繁地使用Scala的Option,用以解决类似Null Object之类的问题。某种程度讲,使用Option必然会减少对空指针引用判断的丑陋代码,结合F...

2895
来自专栏更流畅、简洁的软件开发方式

面向对象的本质是什么?

  什么是面向对象的本质呢?   万物皆对象?No   抽象?No   复用?No   那到底是什么呢? 万物皆对象。问了几位网友,这是答复之一。看到了某个...

3749
来自专栏Python区块链

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

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

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

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

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

3605
来自专栏青玉伏案

代码重构(五):继承关系重构规则

陆陆续续的发表了多篇关于重构的文章了,还是那句话,重构是一个项目迭代开发中必不可少的一个阶段。其实重构伴随着你的项目的整个阶段。在前几篇关于重构的文章中我们谈到...

2126

扫码关注云+社区

领取腾讯云代金券