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

首頁(yè) > 開(kāi)發(fā) > JS > 正文

JS中的一些常用的函數(shù)式編程術(shù)語(yǔ)

2024-05-06 16:52:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

組合 Composition

組合某種類型(含函數(shù))的兩個(gè)元素,進(jìn)而生成一個(gè)該類型的新元素:

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!

偏函數(shù)應(yīng)用 Partial Application

一個(gè)多參函數(shù),如果我們只提供了部分參數(shù),這種應(yīng)用就是偏函數(shù)應(yīng)用:

JavaScript

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

柯里化 Currying

把多參數(shù)函數(shù)處理成 接受一個(gè)參數(shù),返回一個(gè)接受下一個(gè)參數(shù)的函數(shù) 的形式:

JavaScript

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

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

副作用 Side Effect

一個(gè)函數(shù)或表達(dá)式如果出現(xiàn)下面情況被認(rèn)為有副作用:除了返回結(jié)果值,還修改了內(nèi)部狀態(tài),或者為外界植入提供了改變內(nèi)部狀態(tài)的可能。有副作用的例子:隨機(jī)數(shù)生成器 或者 IO操作 。

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

冪等 Idempotency

能夠多次使用同樣的輸入?yún)?shù)無(wú)副作用地執(zhí)行多次:

JavaScript

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

引用透明性 Referential Transparency

一個(gè)表達(dá)式能夠被它的值替換,而不會(huì)影響計(jì)算結(jié)果,這種表達(dá)式稱為引用透明的。

JavaScript

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 禹州市| 敦煌市| 广德县| 阿拉善盟| 濮阳市| 安远县| 普格县| 阜阳市| 镇雄县| 南涧| 习水县| 嘉黎县| 双辽市| 安多县| 南昌县| 昭平县| 沅江市| 延津县| 扎兰屯市| 河东区| 台中县| 安岳县| 张家港市| 探索| 新巴尔虎右旗| 乐东| 会同县| 伽师县| 揭阳市| 三亚市| 新宁县| 梁山县| 抚松县| 全南县| 贵德县| 巩义市| 靖州| 文化| 大洼县| 疏勒县| 清河县|