欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年06月15日 15:01:42   作者:Unknw  
這篇文章主要介紹了JS中的一些常用的函數式編程術語,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,

組合 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 + c
let partial = sum3.bind(null, 10, 20)
partial(30) // 60

柯里化 Currying

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

JavaScript

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

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

副作用 Side Effect

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

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

冪等 Idempotency

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

JavaScript

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

引用透明性 Referential Transparency

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

JavaScript

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

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

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

相關文章

  • JS實現計算小于非負數n的素數的數量算法示例

    JS實現計算小于非負數n的素數的數量算法示例

    這篇文章主要介紹了JS實現計算小于非負數n的素數的數量算法,可實現針對一定范圍內素數個數的統計功能,涉及javascript數值運算相關操作技巧,需要的朋友可以參考下
    2019-02-02
  • js 通用訂單代碼

    js 通用訂單代碼

    對于訂單,想必大家并不陌生吧,下為大家介紹下使用js實現的訂單,感興趣的朋友可以參考下
    2013-12-12
  • 在JavaScript中判斷整型的N種方法示例介紹

    在JavaScript中判斷整型的N種方法示例介紹

    這篇文章主要介紹了在JavaScript中判斷整型的N種方法,需要的朋友可以參考下
    2014-06-06
  • JavaScript數組合并案例講解

    JavaScript數組合并案例講解

    這篇文章主要介紹了JavaScript數組合并案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 第一次接觸JS require.js模塊化工具

    第一次接觸JS require.js模塊化工具

    第一次接觸JS require.js模塊化工具,本文為大家介紹了JS模塊化工具require.js教程第一課認識require.js,編寫require.js,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 前端必會的圖片懶加載(三種方式)

    前端必會的圖片懶加載(三種方式)

    在我們訪問一個圖片展示比較多的網頁時,加載速度慢很多時候正是因為圖片多導致,本文主要介紹了前端必會的圖片懶加載(三種方式),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • javascript實現在指定元素中垂直水平居中

    javascript實現在指定元素中垂直水平居中

    當談到網頁的布局中,居中問題一直得不到很有效的解決,居中通常是相對于某一個元素的,比如我們經常所說的屏幕居中的問題,我們了解父元素的信息越多,我們就越能更加容易的實現居中布局。下面我們通過具體的實例來看看javascript如何來實現垂直水平居中
    2015-09-09
  • JS中封裝axios來管控api的2種方式

    JS中封裝axios來管控api的2種方式

    這篇文章主要介紹了封裝axios來管控api的2種方式,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • javascript中BOM基礎知識總結

    javascript中BOM基礎知識總結

    本文主要對javascript中BOM基礎知識進行總結。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript簡寫技巧

    JavaScript簡寫技巧

    這篇文章主要介紹了JavaScript簡寫技巧,運用簡寫技巧,可以加快開發(fā)速度,讓開發(fā)工作事半功倍,大家感興趣的話可以參考本篇文章
    2021-08-08

最新評論