JavaScript ES8函式式編程實踐入門(第2版)

JavaScript ES8函式式編程實踐入門(第2版)

《JavaScript ES8函式式編程實踐入門(第2版)》是2022年清華大學出版社出版的圖書,作者是[印]安托·阿拉文思(Anto Aravinth)和斯里坎特·馬基拉朱(Srikanth Machiraju),譯者是梁平。

基本介紹

  • 書名:JavaScript ES8函式式編程實踐入門(第2版)
  • 作者:[印]安托·阿拉文思(Anto Aravinth)、斯里坎特·馬基拉朱(Srikanth Machiraju)
  • 原作品:Beginning Functional JavaScript: Uncover the Concepts of Functional Progrumming with EemaSeript 8, Second Edtlon
  • 譯者:梁平
  • 出版社:清華大學出版社
  • 出版時間:2022年3月
  • 頁數:256 頁
  • 定價:59.8 元
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787302597773
內容簡介,圖書目錄,作者簡介,

內容簡介

《JavaScript ES8 函式式編程實踐入門(第2版)》探討函式式編程的概念和JavaScript語言的函式性。首先介紹函式式編程的概念,分析命令式編程和函式式編程之間的主要區別。之後直接進入JavaScript函式,闡述如何使用ES8編寫函式。接下來介紹高階函式,並討論“函式作為數據”如何提供更多的可能性。
  《JavaScript ES8 函式式編程實踐入門(第2版)》帶你使用閉包構建高階函式,並探討數組以及可與數組一起使用的API;介紹如何使用currying與partial應用程式把一個函式轉換為另一個函式。本書還詳細討論compose函式、函子和Monad。在深入探討函子的套用後,本書講解ES8提供的新特性,如async、await。
  《JavaScript ES8 函式式編程實踐入門(第2版)》的最後幾章展示如何使用函式式工具包構建一個小型庫,以開發Web應用程式,還講解測試函式式代碼的技巧。
主要內容
● 探討函式式編程的概念,如字元串填充和異步函式
● 解析如何在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

作者簡介

Anto Aravinth從事軟體行業已經6年多了。他開發了許多用新技術編寫的系統。Anto了解JavaScript的基礎知識及其工作方式,並培訓了許多人。Anto在業餘時間也做OSS,他喜歡打桌球。
Srikanth Machiraju作為開發人員、架構師、技術培訓師和社區發言人,擁有超過10年的工作經驗。他目前在Microsoft Hyderabad擔任高級顧問,領導一個由100名開發人員和質量分析師組成的團隊,為石油行業的科技巨頭開發一個先進的雲計算平台。他的目標是成為一名企業架構師,能夠智慧型設計超大規模的現代應用程式,不斷學習和分享使用前沿平台和技術的現代應用程式開發策略。在加入Microsoft前,他曾在BrainScale擔任企業培訓師和高級技術分析師,負責應用程式設計、開發,並使用Azure進行遷移。他是一名精通技術的開發人員,熱衷於擁抱新技術,並通過部落格和社區分享他的學習歷程。他還撰寫了題為“Learning Windows Server Containers”(學習Windows伺服器容器)和“Developing Bots with Microsoft Bot Framework”(用Microsoft機器人框架開發機器人)的部落格文章。

相關詞條

熱門詞條

聯絡我們