JavaScript ES8 函數式編程實踐入門, 2/e

JavaScript ES8 函數式編程實踐入門, 2/e

作者: Anto Aravinth Srikanth Machiraju 梁平 譯
出版社: 清華大學
出版在: 2022-03-01
ISBN-13: 9787302597773
ISBN-10: 7302597774
裝訂格式: 平裝
總頁數: 256 頁





內容描述


主要內容 ● 探討函數式編程的概念,如字符串填充和異步函數 ● 解析如何在JavaScript中處理函數 ● 創建一個函數庫來模擬underscore.js ● 深入探討ES8的新特性,如擴展運算符和Generator ● 遵循函數範式,創建一個工作方式類似於react-redux模式的庫


目錄大綱


目    錄
 
 
 
 
第1章  函數式編程簡介   1
1.1  什麽是函數式編程?它為何重要   1
1.2  引用透明性   4
1.3  命令式、聲明式與抽象   5
1.4  函數式編程的好處   6
1.5  純函數   7
1.5.1  純函數生成可測試的代碼   7
1.5.2  合理的代碼   9
1.6  並發代碼   10
1.7  可緩存   11
1.8  管道與組合   12
1.9  純函數是數學函數   13
1.10  我們要構建什麽   14
1.11  JavaScript是函數式編程語言嗎   15
1.12  小結   15
第2章  JavaScript函數基礎   17
2.1  ECMAScript歷史   18
2.2  創建並執行函數   18
2.2.1  第一個函數   19
2.2.2  嚴格模式   21
2.2.3  return語句是可選的   22
2.2.4  多語句函數   22
2.2.5  函數參數   23
2.2.6  ES5函數在ES6及更高版本中是有效的   24
2.3  設置項目   24
2.3.1  初始設置   24
2.3.2  用第一個函數式方法處理循環問題   26
2.3.3  export要點   28
2.3.4  import要點   28
2.3.5  使用babel-node運行代碼   29
2.3.6  在npm中創建腳本   29
2.3.7  從git上運行源代碼   30
2.4  小結   31
第3章  高階函數   33
3.1  理解數據   34
3.1.1  理解JavaScript數據類型   34
3.1.2  存儲函數   35
3.1.3  傳遞函數   35
3.1.4  返回函數   37
3.2  抽象和高階函數   38
3.2.1  抽象的定義   38
3.2.2  通過高階函數實現抽象   39
3.3  實用的高階函數   42
3.3.1  every函數   43
3.3.2  some函數   44
3.3.3  sort函數   45
3.4  小結   49
第4章  閉包與高階函數   51
4.1  理解閉包   52
4.1.1  什麽是閉包   52
4.1.2  記住閉包生成的位置   54
4.1.3  回顧sortBy函數   55
4.2  實用的高階函數(續)   56
4.2.1  tap函數   56
4.2.2  unary函數   57
4.2.3  once函數   59
4.2.4  memoized函數   60
4.2.5  assign函數   62
4.3  小結   64
第5章  數組的函數式編程   65
5.1  數組的函數式方法   66
5.1.1  map   66
5.1.2  filter   70
5.2  連接操作   71
5.3  reduce函數   76
5.4  zip數組   82
5.5  小結   86
第6章  柯里化與偏應用   87
6.1  一些術語   88
6.1.1  一元函數   88
6.1.2  二元函數   88
6.1.3  變參函數   88
6.2  柯里化   90
6.2.1  柯里化用例   91
6.2.2  日誌函數:應用柯里化   93
6.2.3  回顧柯里化   94
6.2.4  回顧日誌函數   97
6.3  柯里化實戰   99
6.3.1  在數組內容中查找數字   99
6.3.2  求數組的平方   100
6.4  數據流   100
6.4.1  偏應用   101
6.4.2  實現偏函數   101
6.4.3  柯里化與偏應用技術   104
6.5  小結   104
第7章  組合與管道   107
7.1  組合的概念   108
7.2  函數式組合   110
7.2.1  回顧map與filter   110
7.2.2  compose函數   112
7.3  應用compose函數   113
7.3.1  引入curry與partial   114
7.3.2  組合多個函數   117
7.4  管道/序列   119
7.5  組合的優勢   120
7.5.1  組合滿足結合律   120
7.5.2  管道操作符   121
7.5.3  使用tap函數調試   124
7.6  小結   124
第8章  函子   127
8.1  什麽是函子   128
8.1.1  函子是容器   128
8.1.2  實現map方法   130
8.2  MayBe函子   132
8.2.1  實現MayBe函子   132
8.2.2  簡單用例   133
8.2.3  真實用例   135
8.3  Either函子   140
8.3.1  實現Either函子   140
8.3.2  Reddit例子的Either版本   142
8.4  Pointed函子   145
8.5  小結   145
第9章  深入理解Monad   147
9.1  根據搜索詞條獲取Reddit評論   148
9.2  問題描述   148
9.2.1  實現第一步   150
9.2.2  合並Reddit調用   153
9.2.3  多個map的問題   157
9.3  通過join解決問題   158
9.3.1  實現join   158
9.3.2  實現chain   161
9.3.3  什麽是Monad   163
9.4  小結   164
第10章  使用Generator暫停、恢復和異步   165
10.1  異步代碼及其問題   166
10.2  Generator 101   168
10.2.1  創建Generator   168
10.2.2  Generator的註意事項   169
10.2.3  yield關鍵字   170
10.2.4  Generator的done屬性   172
10.2.5  向Generator傳遞數據   174
10.3  使用Generator處理異步調用   176
10.3.1  一個簡單的案例   176
10.3.2  一個真實的案例   181
10.4  ECMAScript 2017中的異步函數   185
10.4.1  Promise   185
10.4.2  await   186
10.4.3  async   186
10.4.4  鏈式回調   187
10.4.5  異步調用中的錯誤處理   189
10.4.6  異步函數轉化為Generator   190
10.5  小結   192
第11章  構建React-Like庫   193
11.1  不可變性   194
11.2  構建簡單的Redux庫   196
11.3  構建一個類似於HyperApp的框架   201
11.3.1  虛擬DOM   202
11.3.2  JSX   203
11.3.3  JS Fiddle   204
11.3.4  createActions   208
11.3.5  render   209
11.3.6  patch   210
11.3.7  update   211
11.3.8  merge   212
11.3.9  remove   212
11.4  小結   214
第12章  測試與總結   215
12.1  介紹   216
12.2  測試的類型   217
12.3  BDD和TDD   218
12.4  JavaScript測試框架   219
12.4.1  使用Mocha進行測試   220
12.4.2  使用Sinon進行模擬   226
12.4.3  使用Jasmine進行測試   229
12.5  代碼覆蓋率   231
12.6  linting   232
12.7  單元測試庫代碼   234
12.8  最後的想法   236
12.9  小結   237




相關書籍

Vue.js 入門與商城開發實戰

作者 黃菊華

2022-03-01

設計師一定要學的 HTML5‧CSS3 網頁設計手冊 - 零基礎也能看得懂、學得會

作者 陳惠貞

2022-03-01

Go Standard Library Cookbook: Over 120 specific ways to make full use of the standard library components in Golang

作者 Radomir Sohlich

2022-03-01