javascript函数式编程

     2022-03-14     575

关键词:

技术分享

第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和best 63
4.1.2 关于传递函数的更多思考:重复、反复和条件迭代
(iterateUntil) 65
4.2 返回其他函数的函数 67
4.2.1 高阶函数捕获参数 69
4.2.2 捕获变量的好处 69
4.2.3 防止不存在的函数:fnull 72
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 柯里化流利的API 88
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和Disjoin 108
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 Promises 152
8.2 管道 154
8.3 数据流与控制流 158
8.3.1 找个一般的形状 161
8.3.2 函数可以简化创建action 164
8.4 总结 166
第9章 无类编程 167
9.1 数据导向 167
9.2 Mixins 173
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 更多函数式JavaScript 191
A.1 JavaScript的函数式库 191
A.1.1 函数式JavaScript 191
A.1.2 Underscore-contrib 192
A.1.3 RxJS 192
A.1.4 Bilby 194
A.1.5 allong.es 195
A.1.6 其他函数式库 196
A.2 能编译成JavaScript的函数式语言 196
A.2.1 ClojureScript 196
A.2.2 CoffeeScript 197
A.2.3 Roy 198
A.2.4 Elm 198




















































































































javascript系列:函数式编程(开篇)

...数以及函数柯里化等高级函数应用,同时,因为正在学习JavaScript·函数式编程,想整理一下函数式编程中,对于我们日常比较有用的部分。 为什么函数式编程很重要?   学习过C++,java这些面向对象编程语言,我... 查看详情

javascript函数式编程基础(代码片段)

javascript函数式编程基础函数调用引用做返回值/*javascript函数式编程基础*/functionsayHello()return"helloworld";letresult=sayHello();//函数调用letfn=sayHello;//函数引用console.log(fn());//helloworld//函数做返回值functionee( 查看详情

玩转javascript面试:何为函数式编程?(代码片段)

函数式编程在JavaScript领域着实已经成为一个热门话题。就在几年前,很多JavaScript程序员甚至都不知道啥是函数式编程,但是就在近三年里我看到过的每一个大型应用的代码库中都包含了函数式编程思想的大规模使用。函数式编... 查看详情

Javascript 是函数式编程语言吗?

】Javascript是函数式编程语言吗?【英文标题】:IsJavascriptaFunctionalProgrammingLanguage?【发布时间】:2011-04-2703:08:08【问题描述】:仅仅因为函数是一等对象,有闭包和更高阶的函数,Javascript是否应该被称为函数式编程语言?我认为... 查看详情

函数式编程

和Lisp、Haskell不同,javascript并非函数式编程语言,但在javascript中可以操控对象一样操控函数,也就是说可以在javascript中应用函数式编程技术。ES5中的数组方法(如map()和reduce())就可以非常适合用于函数式编程风格。本文将详细介... 查看详情

javascript与函数式编程

原文:https://bethallchurch.github.io/JavaScript-and-Functional-Programming/译文:http://www.zcfy.cc/article/1013译者注:推荐一篇译文,《函数式编程术语解析》。本文是我在2016年7月29号听KyleSimpson精彩的课程《Functional-LightJavaScript》时所做的笔记... 查看详情

javascript函数式编程

编程范式编程范式是一个由思考问题以及实现问题愿景的工具组成的框架。很多现代语言都是聚范式(或者说多重范式):他们支持很多不同的编程范式,比如面向对象,元程序设计,泛函,面向过程,等等。函数式编程范式函... 查看详情

《javascript函数式编程思想》——从面向对象到函数式编程

...假如本书的写作时间倒退回十年前,书名可能会变成JavaScript面向对象编程思想。自上世纪90年代兴起的面向对象编程思想随Java的繁荣达于顶点,在JavaScript从一门只被用来编写零星的简单的表单验证代码的玩具语言变成日... 查看详情

javascript函数式编程(代码片段)

JavaScript函数式编程(一) JavaScript函数式编程(二)在第二篇文章里,我们介绍了 Maybe、Either、IO 等几种常见的Functor,或许很多看完第二篇文章的人都会有疑惑:『这些东西有什么卵用?』事实上,如果只是为了学... 查看详情

javascript函数式编程-包含闭包链式优化及柯里化

本文着重介绍个人理解的函数式编程。函数式编程个人理解为:以函数为主要载体的编程方式。好处:语义更加清晰可复用性高可维护性好作用域局限、副作用少基本函数式编程://实现数组中每个单词首字母大写//一般写法const... 查看详情

javascript与函数式编程

原文:https://bethallchurch.github.io/JavaScript-and-Functional-Programming/译文:http://www.zcfy.cc/article/1013译者注:推荐一篇译文,《函数式编程术语解析》。本文是我在2016年7月29号听KyleSimpson精彩的课程《Functional-LightJavaScript》时所做的笔记... 查看详情

javascript-underscore与函数式编程

《Javascript函数式编程 PDF》#csdn下载地址http://download.csdn.net/detail/tssxm/9713727 Underscore #githubhttps://github.com/jashkenas/underscore#中文官方网站http://www.css88.com/doc/underscore/#CDN<s 查看详情

《javascript函数式编程思想》

自序伴随着Web技术的普及,JavaScript已成为应用最广泛的编程语言之一。由于其在Web前端编程中的统治地位、语言本身的表现力、灵活性、开源的本质和ECMAScript标准近年来的快速发展,JavaScript向各个领域渗透的势头仍然... 查看详情

关于javascript函数式编程的全方位解析

前言大家好,我是CoderBin,本次讲讲函数式编程里面的一些概念,涉及到了纯函数、高阶函数。希望对大家有所帮助,谢谢!如果文中有不对、疑惑的地方,欢迎在评论区留言指正 查看详情

《javascript函数式编程思想》——列表

第8章 列表函数式编程与列表处理有很深的渊源。列表是最基础,也是使用最普遍的复合数据类型。作为最早出现的函数式编程语言之一,Lisp【注:它的名称就来源于“列表处理器”(LIStProcessor)】用函数参... 查看详情

《javascript函数式编程思想》

自序伴随着Web技术的普及,JavaScript已成为应用最广泛的编程语言之一。由于其在Web前端编程中的统治地位、语言本身的表现力、灵活性、开源的本质和ECMAScript标准近年来的快速发展,JavaScript向各个领域渗透的势头仍然... 查看详情

《javascript函数式编程思想》——部分应用和复合

第5章 部分应用和复合一等值的函数,是函数式编程的基石。部分应用和复合,则是函数式编程的重要特征。采用命令式编程时,每当我们感觉需要抽象出一个新的功能时,就会定义一个函数。在函数式编程中... 查看详情

翻译连载|附录c:函数式编程函数库-《javascript轻量级函数式编程》|《你不知道的js》姊妹篇

...TML最坚实的梁柱;分享,是CSS里最闪耀的一瞥;总结,是JavaScript中最严谨的逻辑。经过捶打磨练,成就了本书的中文版。本书包含了函数式编程之精髓,希望可以帮助大家在学习函数式编程的道路上走的更顺畅。比心。译者团... 查看详情