日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SegmentFault 技术周刊 Vol.16 - 浅入浅出 JavaScript 函数式编程

發(fā)布時間:2025/3/17 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SegmentFault 技术周刊 Vol.16 - 浅入浅出 JavaScript 函数式编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

函數(shù)式編程(Functional Programming),一看這個詞,簡直就是學(xué)院派的典范。

以至于從 Lisp 的創(chuàng)世,到 Scheme、Haskell、Clean、Erlang、Miranda、Scala、LOGO、Clojure、Mathematica 甚至 R,它們一出生就站在了鄙視鏈的頂端,尤其是非純函數(shù)式的 Lisp 老祖和純函數(shù)式的集大成者 Haskell。就如段子里說的,一群程序員自我介紹,當(dāng)聽到“我是寫 Lisp 的…”這一句,所有人的注意力都會被吸引。簡直是眾多程序員想要裝逼的頂峰,可見一斑。

學(xué)院派的語言方法似乎只有大學(xué)研究里才會使用,但隨著技術(shù)和時代的發(fā)展,JavaScript,這種典型的多范式編程語言,也由面向?qū)ο鬄榻^對主導(dǎo)逐漸納入各種函數(shù)式編程的特性,這兩年的 React、TypeScript、Immutable、underscore、Elm 等等,紛紛加入了函數(shù)式編程的大潮。所以這期周刊,我們就重點引入 JavaScript 的函數(shù)式編程,淺入淺出,一窺函數(shù)式編程的思想,可能讓你對編程語言的理解更加融會貫通一些。

淺入

1. 什么是函數(shù)式編程?

JavaScript 函數(shù)式編程(一) 丨 JavaScript 函數(shù)式編程(二) // 王偉嘉

這兩篇將 JS 函數(shù)式編程的典型特性“1. 純函數(shù)概念,函數(shù)柯里化和函數(shù)的組合;2. 容器和 Functor,Maybe,Monad,Either 以及 IO”由淺及深,一個個地做了介紹,非常不錯的入門文章。

「所謂的純函數(shù)就是,對于相同的輸入,永遠會得到相同的輸出,而且沒有任何可觀察的副作用,也不依賴外部環(huán)境的狀態(tài)。」

2. 函數(shù)式思想的理解

《JavaScript 函數(shù)式編程》讀書筆記 // homker

這是作者對《JavaScript 函數(shù)式編程》的理解,JS 為什么要用函數(shù)式編程(數(shù)據(jù)和行為的關(guān)系、專注于過程本身),如何使用函數(shù)式編程(一等公民、純函數(shù)、可組合、高階函數(shù)、基于流的編程),可以讓你更深入地理解 JS 大量引入函數(shù)式方法的思想。

譯丨JavaScript 與函數(shù)式編程 // 文藺

現(xiàn)在,來進行更細節(jié)的分析和理解
展現(xiàn)另一面的函數(shù)式編程思維:強調(diào)將程序狀態(tài)變化(即副作用 side effect)的次數(shù)減到最小,鼓勵使用不可變數(shù)據(jù)(immutable data)和純函數(shù)(pure functions)(“純”意味著沒有副作用的),更傾向于使用聲明式的風(fēng)格(讓代碼更干凈,可讀性更強,推理起來更簡單)。

3. 特性各個了解

在下函數(shù)式編程有何貴干 // 力譜宿云

示例代碼清晰,簡單明了,讓你快速了解 FP 的諸多特性,接下來,再一一分解。

  • 譯丨JavaScript 中的不可變性(Immutability) // leftstick

  • 譯丨淺入淺出 Monads // leftstick

  • JavaScript 也玩私人訂制——玩轉(zhuǎn)函數(shù)柯里化 // 條件狀語從句

  • 函數(shù)式編程中局部應(yīng)用(Partial Application)和局部套用(Currying)的區(qū)別 // n?i?g?h?t?i?r?e?

  • 函數(shù)式編程之柯里化和組合詳解 // 橘子小睿

前面提到的純函數(shù)、函數(shù)柯里化、函數(shù)的組合、偏函數(shù)、容器、Functor、Monad、IO 等等,這里都有分別的詳細講解。

淺出

4. 各 JS 方言都有了哪些實踐?

譯丨函數(shù)式 TypeScript // 文藺

「談到函數(shù)式編程時,可能常被提到的是機制、方法,而不是核心原則。但從根本上來說,函數(shù)式編程就是關(guān)于如使用通用的可復(fù)用函數(shù)進行組合編程。」——作者在重構(gòu) TypeScript 代碼時使用函數(shù)式的一些思考

  • 函數(shù)式編程——入門筆記與 React 實踐 // kpaxqin

  • Immutable 詳解及 React 中實踐 // Cam

  • Redux 入坑進階 - 源碼解析 // ecmadao

React.js 的代碼中包含了大量函數(shù)式思想,比如 Immutable,比如 Redux 的柯里化函數(shù)以及代碼組合,不妨來看看。

  • Elm 入門實踐系列 by @kpaxqin :(一)基礎(chǔ)篇 丨 (二)類型篇 丨 (三)進階篇

  • 笨辦法學(xué)函數(shù)式編程:Elm 初體驗 // Integ

如果你打算開始函數(shù)式編程,晦澀的 Monad/Functor 們可能也需要動手寫點東西來熟悉,而隨著整個 React 社區(qū)往函數(shù)式方向發(fā)展,Elm 作為前端函數(shù)式編程的先驅(qū)和風(fēng)向標,毫無疑問是值得去學(xué)習(xí)和借鑒的。這兩個系列,一步步地帶你了解如何使用 Elm 構(gòu)建應(yīng)用。

5. 函數(shù)式的思想在其他語言中的體現(xiàn)

函數(shù)式編程在實際生產(chǎn)中發(fā)揮著巨大的作用,越來越多的語言加入閉包,匿名函數(shù)等非常典型的函數(shù)式編程的特性,從某種程度上來講,函數(shù)式編程正在逐步“同化”命令式編程。

  • Swift - Swift 中的柯里化 Currying:Swift 柯里化特性的簡單了解

  • Scala - Scala 類型參數(shù):多范式語言的典范

  • Java - Java8 Lambda 本質(zhì)論 丨 正交設(shè)計 丨 Write Lean Programs:Java 的設(shè)計模式、λ 演算、設(shè)計思想

  • Scheme - 如何實現(xiàn)一個沒有名字的遞歸函數(shù):一個遞歸引發(fā)的思考 - “當(dāng)函數(shù)在還沒有定義完整時,為什么能夠直接調(diào)用的呢?”

6. 補充閱讀

  • JavaScript 函數(shù)式真正的淺析

  • JavaScript 數(shù)組分組的實現(xiàn)

  • Immutable.js 初識

  • js 函數(shù)式編程之函數(shù)柯里化

  • 合理的使用純函數(shù)式編程

  • 淺談函數(shù)式編程和函數(shù)響應(yīng)式編程

  • 正交設(shè)計,OO 與 SOLID

(本期完)


# SegmentFault 技術(shù)周刊 #

「技術(shù)周刊」是社區(qū)特別推出的技術(shù)內(nèi)容系列,一周一主題。周刊篩選的每篇內(nèi)容,是作者的獨到見解,踩坑總結(jié)和經(jīng)驗分享。

每周二更新,歡迎「關(guān)注」或者「訂閱」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關(guān)的優(yōu)秀文章。

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的SegmentFault 技术周刊 Vol.16 - 浅入浅出 JavaScript 函数式编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。