国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS中的一些常用的函數式編程術語

2024-05-06 15:37:57
字體:
來源:轉載
供稿:網友

組合 Composition

組合某種類型(含函數)的兩個元素,進而生成一個該類型的新元素:

JavaScript

let compose = (f, g) => a => f(g(a))let toUpperCase = x => x.toUpperCase()let exclaim = x => x + '!'let shout = compose(exclaim, toUpperCase);shout("hello world") // HELLO WORLD!

偏函數應用 Partial Application

一個多參函數,如果我們只提供了部分參數,這種應用就是偏函數應用:

JavaScript

let sum3 = (a, b, c) => a + b + clet partial = sum3.bind(null, 10, 20)partial(30) // 60

柯里化 Currying

把多參數函數處理成 接受一個參數,返回一個接受下一個參數的函數 的形式:

JavaScript

let curryingSum3 = (a) => (b) => (c) => a + b + clet curriedSum3 = curryingSum3(30)(20) // [Function]curriedSum3(10) // 60

注意:柯里化和偏函數應用是不同的,它只接受單參輸入;在Haskell這樣的純函數式語言中,只存在柯里化,多參函數是一種語法糖,這樣做的好處是為函數組合提供了更靈活的手段, 并且使得接口更為流暢。

副作用 Side Effect

一個函數或表達式如果出現下面情況被認為有副作用:除了返回結果值,還修改了內部狀態,或者為外界植入提供了改變內部狀態的可能。有副作用的例子:隨機數生成器 或者 IO操作 。

document。prototype。getter=function(){get(this)}

冪等 Idempotency

能夠多次使用同樣的輸入參數無副作用地執行多次:

JavaScript

let id = x => xid(id(id(10))) === id(10) // trueMath.abs(Math.abs(-1)) === Math.abs(-1) // true

引用透明性 Referential Transparency

一個表達式能夠被它的值替換,而不會影響計算結果,這種表達式稱為引用透明的。

JavaScript

let greeting = () => 'hello, 'greeting() + 'buddy'

上面的表達式中每次對 greeting() 的調用,都可以被替換為 'hello, ',我們可以斷言 greeting()具有引用透明性。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 崇信县| 长丰县| 平江县| 张家口市| 花垣县| 汤阴县| 若羌县| 双桥区| 沧州市| 株洲市| 嘉善县| 清丰县| 新野县| 太仓市| 板桥市| 吉木乃县| 周至县| 新邵县| 庆城县| 顺昌县| 西乡县| 启东市| 任丘市| 阿克苏市| 平乡县| 满洲里市| 龙口市| 贵港市| 天祝| 大方县| 石河子市| 平遥县| 靖西县| 苍南县| 吉木萨尔县| 女性| 长乐市| 永靖县| 勐海县| 工布江达县| 开原市|