自序

伴随着Web技术的普及,JavaScript已成为应用最广泛的编程语言之一。由于其在Web前端编程中的统治地位、语言本身的表现力、灵活性、开源的本质和ECMAScript标准近年来的快速发展,JavaScript向各个领域渗透的势头仍然强劲。函数式编程的思想和语言原来仅仅在计算机学术圈中流行,近年来它的魅力越来越多地被主流软件开发行业认识到,Scala、Closure等语言的出现,C#、Java等语言中引入函数式编程的功能都是这一趋势的体现。

传统的JavaScript开发主要使用命令式和面向对象的编程范式,并零星地结合了一些函数式编程的技巧。通过系统地介绍函数式编程的思想和技术,展现它在提高代码的表现力、可读性和可维护性等方面的益处,本书希望能让更多的JavaScript程序员了解并喜欢上这种优美而高效的编程范式。

全书共分9章。第1、2章介绍了与JavaScript函数式编程所用技术紧密关联的名称和类型系统的理论;第3章简要介绍了函数式编程的理论基础lambda演算和JavaScript中函数的相关知识;第4、5章介绍了函数式编程的基础和核心技术:一等值的函数、部分应用和复合;第6章介绍了函数式编程的典型特征:没有副作用的纯函数和不可变的数据;第7章介绍了函数式编程中进行重复计算的递归模式;第8章介绍了函数式编程的重要领域:列表处理;第9章系统地比较了面向对象编程和函数式编程。

野人献曝,未免贻笑大方;愚者千虑,或有一得可鉴。书中的不足之处,欢迎读者批评指正。

目录

内容提要
前言
第1章  名称
1.1  名称绑定
1.1.1  常量和变量
1.2  作用域
1.2.1  包块作用域与就近声明
1.2.2  静态作用域和动态作用域
1.2.3  前向引用和提升
1.3  闭包
1.3.1  包块作用域与闭包
1.4  小结
第2章  类型系统
2.1  类型是什么
2.2  常用的数据类型
2.2.1  整数
2.2.2  浮点数
2.2.3  布尔值
2.2.4  字符
2.2.5  元组、结构体、类
2.2.6  函数
2.2.7  数组、字符串、队列、堆栈、列表
2.2.8  结构体、映射
2.2.9  深入复合类型
2.3  强类型与弱类型
2.4  名义类型和结构类型
2.5  静态类型与动态类型
2.5.1  静态类型
2.5.2  动态类型
2.6  多态性
2.6.1  子类型多态性
2.6.2  参数多态性
2.7  JavaScript的类型系统
2.7.1  undefined和null
2.7.2  弱类型
2.7.3  变成强类型
2.8  鸭子类型和多态性
2.9  小结
第3章  Lambda演算和函数
3.1  命令式编程中函数的作用
3.1.1  抽象级别
3.2  Lambda演算
3.2.1  定义
3.2.2  记法
3.2.3  化约
3.2.4  算数
3.2.5  逻辑运算
3.2.6  函数式编程的特点
3.3  JavaScript中的函数
3.3.1  定义函数
3.3.2  调用函数
3.3.3  传递参数
3.3.4  模块
3.5  小结
第4章  函数是一等值
4.1  函数参数
4.1.1  数组的迭代方法
4.1.2  设计函数参数
4.2  函数返回值
4.2.1  判断数据类型
4.2.2  日志
4.2.3  读取对象属性
4.3  高阶函数
4.3.1  组合谓词函数
4.3.2  改变函数参数数目
4.3.3  检查参数类型
4.3.4  记忆化
4.4  小结
第5章  部分应用和复合
5.1  部分应用
5.2  柯里化
5.2.1  增强的柯里化
5.2.2  从右向左柯里化
5.2.3  进一步增强的柯里化
5.2.4  柯里化的性能成本
5.2.5  应用柯里化的方式
5.2.6  参数的顺序
5.2.7  柯里化与高阶函数
5.3  复合
5.3.1  管道和数据流
5.3.2  函数类型与柯里化
5.4  一切都是函数
5.4.1  操作符的函数化
5.4.2  方法的函数化
5.4.3  控制流语句的函数化
5.5  性能和可读性
5.6  小结
第6章  副作用和不变性
6.1  副作用
6.2  纯函数
6.2.1  外部变量
6.2.2  实现
6.2.3  函数内部的副作用
6.2.4  闭包
6.3  不变性
6.3.1  哲学上的不变性与身份
6.3.2  简单类型和复合类型
6.3.3  值类型和引用类型
6.3.4  可变类型和不可变类型
6.3.5  可变数据类型的坏处
6.3.6  克隆和冻结
6.3.7  不可变的数据结构
6.3.8  不可变的映射和数组
6.3.9  不可变类型的其他好处
6.4  小结
第7章  递归
7.1  调用自身
7.1.1  递归的思路
7.1.2  带累积参数的递归函数
7.2  递归的数据结构
7.2.1  构建列表
7.2.2  树
7.3  递归与迭代
7.3.1  名称
7.3.2  理念和对比
7.3.3  迭代协议
7.3.4  递归协议
7.3.5  搜索树
7.4  尾部递归
7.4.1  调用堆栈
7.4.2  尾部调用优化
7.4.3  怎样算是尾部调用
7.4.4  尾部递归
7.5  递归的效率
7.6  小结
第8章  列表
8.1  处理列表
8.1.1  函数的三种写法
8.1.2  处理列表的高阶函数
8.2  函数式编程的列表接口
8.2.1  没有副作用的方法
8.2.2  有副作用的方法
8.2.3  列表接口中的其他函数
8.3  小结
第9章  从面向对象到函数式编程
9.1  面向对象编程的特点
9.1.1  封装性
9.1.2  继承性
9.1.3  多态性
9.2  JavaScript面向对象编程
9.2.1  创建和修改单个对象
9.2.2  克隆和复制属性
9.2.3  原型
9.2.4  建构函数
9.2.5  建构函数和类型继承
9.2.6  原型和类型继承
9.2.7  Proxy和对象继承
9.2.8  Mixin
9.2.9  工厂函数
9.3  函数式编程的视角
9.3.1  不可变的对象
9.3.2  评判面向对象编程
9.4  方法链和复合函数
9.4.1  方法链
9.4.2  延迟的方法链
9.4.3  复合函数
9.4.3  函数式的SQL
9.5  小结

更多内容

《JavaScript函数式编程思想》(京东)

《JavaScript函数式编程思想》(当当)

欢迎各位朋友本人及男朋友女朋友老公老婆儿子女儿中对JavaScript和函数式编程感兴趣的阅读。每次购买50斤以上(含)者赠作者签名照一张:)

《JavaScript函数式编程思想》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. 编程之美2.7 最大公约数,最小公倍数
  2. 高中计算机会考优秀网,北京高三体育会考成绩255分为优秀
  3. Krpano skin_settings解释
  4. 神经网络中常用的激活函数
  5. kettle 查询数据库写入文件_怎么连接数据库-详解如何用kettle连接mysql数据库并导出sql查询结果...
  6. 【做题记录】[NOIP2011 提高组] 观光公交
  7. 华北水利水电大学c语言实验报告八2020,2021年华北水利水电大学级C语言实验报告.doc...
  8. 24小时BTC合约大单成交1.52亿美元 现货大单成交1亿美元
  9. 让解析器可以快速处理词法单元之间的空格
  10. 让PPT设计更出彩的技巧都有哪些?
  11. 使用IAR下载烧录调试
  12. linux能力集机制,Linux能力(capability)机制的继承
  13. Windows无法访问指定设备路径或文件,您可能没有合适的权限访问这个项目
  14. 《算法帝国》第一章第二章读书笔记
  15. 唯品会技术架构一览表
  16. 致远项目管理SPM系统资源管理之资源台班工时管理
  17. 利用snowfall.jquery.js实现爱心满屏飞
  18. buflab-计算机系统实验
  19. tableau server在centos7.6上安装记录
  20. ChinaSoft 论坛巡礼 | 软件工程研究与实践

热门文章

  1. Python 函数案例分析
  2. android项目实战-人脸识别接口应用
  3. 灵感学院:45款唯美的苹果 iOS 应用程序图标设计
  4. Centos配置IP地址
  5. 新魔百和CM101S_MV100_EMMC线刷烧录包 可救砖
  6. 智能触控平板如何选? MAXHUB X3 SC65CD双十一促销
  7. JS获取当前时间戳与时分,秒判断时间现在时间是否处于某个时间段内
  8. 计算机专业pro配置,处理器名字带“PRO”的商用机才够专业!
  9. React中使用图表插件(ECharts)
  10. 键盘方法论: 在键盘前面,你就是钢琴师!