JavaScript 是近年来非常受瞩目的一门编程语言,它既支持面向对象编程,也支持函数式编程。本书专门介绍JavaScript函数式编程的特性。
全书共9章,分别介绍了JavaScript函数式编程、一等函数与Applicative编程、变量的作用域和闭包、高阶函数、由函数构建函数、递归、纯度和不变性以及更改政策、基于流的编程、类编程。除此之外,附录中还介绍了更多函数式JavaScript。
本书内容全面,示例丰富,适合想要了解函数式编程的JavaScript程序员和学习JavaScript的函数式程序员阅读。
第1章 JavaScript函数式编程简介1
1.1 JavaScript案例1
1.2 开始函数式编程4
1.2.1 为什么函数式编程很重要4
1.2.2 以函数为抽象单元7
1.2.3 封装和隐藏9
1.2.4 以函数为行为单位10
1.2.5 数据抽象14
1.2.6 函数式JavaScript初试17
1.2.7 加速19
1.3 Underscore示例22
1.4 总结23
第2章 一等函数与Applicative编程24
2.1 函数是一等公民24
2.2 Applicative编程30
2.2.1 集合中心编程31
2.2.2 Applicative编程的其他实例32
2.2.3 定义几个Applicative函数35
2.3 数据思考36
2.4 总结43
第3章 变量的作用域和闭包44
3.1 全局作用域44
3.2 词法作用域46
3.3 动态作用域47
3.4 函数作用域51
3.5 闭包52
3.5.1 模拟闭包53
3.5.2 使用闭包57
3.5.3 闭包的抽象59
3.6 总结60
第4章 高阶函数62
4.1 以其他函数为参数的函数62
4.1.1 关于传递函数的思考:max、finder和best63
4.1.2 关于传递函数的更多思考:重复、反复和条件迭代
(iterateUntil)65
4.2 返回其他函数的函数67
4.2.1 高阶函数捕获参数69
4.2.2 捕获变量的好处69
4.2.3 防止不存在的函数:fnull72
4.3 整合:对象校验器74
4.4 总结77
第5章 由函数构建函数78
5.1 函数式组合的精华78
5.2 柯里化(Currying)83
5.2.1 向右柯里化,还是向左84
5.2.2 自动柯里化参数85
5.2.3 柯里化流利的API88
5.2.4 JavaScript柯里化的缺点89
5.3 部分应用89
5.3.1 部分应用一个和两个已知的参数91
5.3.2 部分应用任意数量的参数92
5.3.3 局部应用实战:前置条件93
5.4 通过组合端至端的拼接函数96
5.5 总结98
第6章 递归100
6.1 自吸收(self—absorbed)函数(调用自己的函数)100
6.1.1 用递归遍历图105
6.1.2 深度优先自递归搜索106
6.1.3 递归和组合函数:Conjoin和Disjoin108
6.2 相互关联函数(函数调用其他会再调用回它的函数)110
6.2.1 使用递归深克隆111
6.2.2 遍历嵌套数组112
6.3 太多递归了114
6.3.1 生成器117
6.3.2 蹦床原理以及回调120
6.4 递归是一个底层操作121
6.5 总结122
第7章 纯度、不变性和更改政策123
7.1 纯度123
7.1.1 纯度和测试之间的关系124
7.1.2 提取纯函数125
7.1.3 测试不纯函数的属性126
7.1.4 纯度与引用透明度的关系127
7.1.5 纯度和幂等性129
7.2 不变性130
7.2.1 如果一棵树倒在树林里,有没有声音?132
7.2.2 不变性与递归133
7.2.3 冻结和克隆134
7.2.4 在函数级别上观察不变性136
7.2.5 观察对象的不变性137
7.2.6 对象往往是一个低级别的操作140
7.3 控制变化的政策141
7.4 总结144
第8章 基于流的编程145
8.1 链接145
8.1.1 惰性链148
8.1.2 Promises152
8.2 管道154
8.3 数据流与控制流158
8.3.1 找个一般的形状161
8.3.2 函数可以简化创建action164
8.4 总结166
第9章 无类编程167
9.1 数据导向167
9.2 Mixins173
9.2.1 修改核心原型175
9.2.2 类层次结构176
9.2.3 改变层级结构179
9.2.4 用Mixin扁平化层级结构180
9.2.5 通过Mixin扩展新的语义185
9.2.6 通过Mixin混合出新的类型187
9.2.7 方法是低级别操作188
9.3.call(“Finis”);190
附录A 更多函数式JavaScript191
A.1 JavaScript的函数式库191
A.1.1 函数式JavaScript191
A.1.2 Underscore—contrib192
A.1.3 RxJS192
A.1.4 Bilby194
A.1.5 allong.es195
A.1.6 其他函数式库196
A.2 能编译成JavaScript的函数式语言196
A.2.1 ClojureScript196
A.2.2 CoffeeScript197
A.2.3 Roy198
A.2.4 Elm198
附录B推荐书目
MATLAB 2018从入门到精通-中文版-实战案例版 本书特色 1.402集视频讲解。为方便读者学习,本书对书中实例录制了视频,并生成二维码,可以手机扫码看视...
PHP编程-第3版 本书特色 这是一本可以让读者深入了解php 技术的书籍,作者用言简意赅的语言并结合了大量实例来解释每一个要素。本书涵盖了php 所有...
会声会影X4从新手到高手-1DVD多媒体教学光盘 本书特色 本书主要特点内容全面实用 >选择*实用、*常用的知识,力求您“学的知识都用得上”,让您的学习不做无用...
人工神经网络基础 本书特色 本书是为信号与信息处理、模式识别与智能系统等学科的本科高年级学生和硕士生编写的教材,也是相关专业技术人员自学人工神经网络的入门参考书...
Learnhowtobuildcompleteclient-sideapplicationswithClojureScript,theClojurelangua...
TheSeriesinCommunicationTechnologyandSocietyisanintegratedseriescenteringontheso...
自1993年COM首次发布以来,COM本身经历了重大的变化,但是它的基本思想和结构一直保持相对稳定,这也正说明了COM思想的魅力所在。
人工智能-智能系统指南-第3版-英文版 内容简介 人工智能经常被人们认为是计算机科学中一门高度复杂甚至令人生畏的学科。长期以来人工智能方面的书籍往往包含...
《特征提取与图像处理(第2版)》内容简介:图像处理和计算机视觉是当前热门的研究课题。《特征提取与图像处理(第2版)》以一种简洁
《法国语言政策研究》内容简介:本书首先解释了法国语言政策体系的核心是“合法语言的建构”,并对法语标准语的形成、立法、规范化
译者序遥想六年之前,交互设计在大陆刚刚兴起,UCD的概念开始慢慢被大家所认识。那时正和Ryana等同学建起UXStudy(油茶会)。市场
《建筑师与设计师视觉笔记》旨在鼓励视觉表达,其理念基于这样一种观点,即视觉修养与文字修养同等重要。为了开拓表达视觉信息的
《Linux人工智能开发实例》内容简介:本书是一本介绍Linux知识和应用技术的书籍,包含嵌入式Linux系统概述和6个典型案例:音频分析
本书在尊重《设计模式》原意的同时,针对JavaScript语言特性全面介绍了更适合JavaScript程序员的了16个常用的设计模式,讲解了Ja
设计与艺术关系密切,艺术史家往往是设计史家,本书是一个明证。以艺术史家著称的贡布里希对设计的思考与论述同样既引人入胜,又
WebStandardsarethestandardtechnologyspecificationsenforcedbytheWorldWideWebConso...
《刺客信条:兄弟会》内容简介:我即将前往昔日帝国的心脏,去将我的敌人彻底铲除。然而我深知罗马并非一天所能建成,区区一个刺客
《意志力》内容简介:《意志力》是一本风靡全世界的心理学通俗读物。被拖延症困扰?面临情感纠葛?减肥总是反弹?控制不住购物的冲
HIGHLIGHTAninsidersperspectiveontheASP.NETMVCframework,ahighly-anticipatedproduc...
《如何做用户增长更有效》内容简介:随着互联网用户逐渐饱和,如何在存量市场中真正找到用户增长的钥匙?在本书中,你会找到想要的