摘要:高階函數(shù)在函數(shù)式語言中,函數(shù)是這個語言中的一等公民。高階函數(shù)可以接收函數(shù)作為參數(shù),或者返回一個函數(shù)結(jié)果,或者兩者同時具備。下面我們看另一個高階函數(shù)我們通過向函數(shù)傳遞一個常量來創(chuàng)建一個函數(shù),將給任意值加上。只要有引用指向它該函數(shù)就會一直存在。
上篇文章介紹了純函數(shù),相信你已經(jīng)理解了純函數(shù)的概念。下面我們接著看一段代碼
let minimum = 21; let checkAge = age => age >= minimum // 純的 let checkAge = age => { let minimum = 21; return age >= minimum; };
純函數(shù)把關(guān)鍵字18硬編碼在函數(shù)內(nèi)部,擴(kuò)展性差,那我們?nèi)绾谓鉀Q呢?
let checkAge =(minimum, age) => age >= minimum
機(jī)智如你肯定會想到通過一個參數(shù)將通過傳參數(shù)將minimum傳遞進(jìn)去,很好,這樣很機(jī)智的解決了問題,可是如果情況是這樣的呢?
let minimum = x => x * 2; let checkAge = age => age >= minimum(2)
我們怎么把這段代碼改成純函數(shù),且不是硬編碼的呢?
我們可以將一個函數(shù)作為參數(shù)傳遞。
在函數(shù)式語言中,函數(shù)是這個語言中的一等公民。通俗來講,函數(shù)僅僅是另一種值而已,他與村口的"劉能" "趙四"這類js其他數(shù)據(jù)類型一樣,把它們存在數(shù)組里,當(dāng)作參數(shù)傳遞,賦值給變量...等等。
let checkAge =(age, minimum) => age >= minimum(2)
我們的新函數(shù)就稱為高階函數(shù)(Higher-order Function)。
高階函數(shù)可以接收函數(shù)作為參數(shù),或者返回一個函數(shù)結(jié)果,或者兩者同時具備。
下面我們看另一個高階函數(shù)
let makeAdder = x => (y => x + y); let add10 = makeAdder(10); add10(10); //20
我們通過向makeAdder函數(shù)傳遞一個常量10來創(chuàng)建一個函數(shù)add10,add10將給任意值加上10。
這個makeAdder里面的匿名函數(shù)就是我們經(jīng)常被面試官用來壓壓驚的大名鼎鼎的閉包,這個行為非常的重要,因為如果沒有它,能夠返回函數(shù)的函數(shù)不是很有用。
當(dāng)一個函數(shù)被創(chuàng)建,其整個生命周期中都是可以訪問在在其創(chuàng)建時作用域內(nèi)的所有變量。只要有引用指向它該函數(shù)就會一直存在。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82889.html
摘要:代碼組合在函數(shù)式編程中,通過將一個個功能單一的純函數(shù)組合起來實現(xiàn)一個復(fù)雜的功能,就像樂高拼積木一樣,這種稱為函數(shù)組合代碼組合。函數(shù)式編程就變成了運用不同的函子,解決實際問題。 高階函數(shù) 滿足以下兩點的函數(shù): 函數(shù)可以作為參數(shù)被傳遞 函數(shù)可以作為返回值輸出 叫高階函數(shù),很顯然js中的函數(shù)滿足高階函數(shù)的條件。 函數(shù)作為參數(shù): function pow(x) { return x...
摘要:由于技術(shù)棧的學(xué)習(xí),筆者需要在原來函數(shù)式編程知識的基礎(chǔ)上,學(xué)習(xí)的使用。筆者在社區(qū)發(fā)現(xiàn)了一個非常高質(zhì)量的響應(yīng)式編程系列教程共篇,從基礎(chǔ)概念到實際應(yīng)用講解的非常詳細(xì),有大量直觀的大理石圖來輔助理解流的處理,對培養(yǎng)響應(yīng)式編程的思維方式有很大幫助。 showImg(https://segmentfault.com/img/bVus8n); [TOC] 一. 響應(yīng)式編程 響應(yīng)式編程,也稱為流式編程...
摘要:函數(shù)式編程,一看這個詞,簡直就是學(xué)院派的典范。所以這期周刊,我們就重點引入的函數(shù)式編程,淺入淺出,一窺函數(shù)式編程的思想,可能讓你對編程語言的理解更加融會貫通一些。但從根本上來說,函數(shù)式編程就是關(guān)于如使用通用的可復(fù)用函數(shù)進(jìn)行組合編程。 showImg(https://segmentfault.com/img/bVGQuc); 函數(shù)式編程(Functional Programming),一...
摘要:函數(shù)式編程二拖延癥了好久,第二篇終于寫出來了。如果你對熟悉的話應(yīng)該還記得,是可以調(diào)用來集中處理錯誤的對于函數(shù)式編程我們也可以做同樣的操作,如果運行正確,那么就返回正確的結(jié)果如果錯誤,就返回一個用于描述錯誤的結(jié)果。 JavaScript函數(shù)式編程(二) 拖延癥了好久,第二篇終于寫出來了。 上一篇在這里:JavaScript函數(shù)式編程(一) 上一篇文章里我們提到了純函數(shù)的概念,所謂的純函數(shù)...
摘要:注意是單一參數(shù)柯里化是由以邏輯學(xué)家命名的,當(dāng)然編程語言也是源自他的名字,雖然柯里化是由和發(fā)明的。辨別類型和它們的含義是一項重要的技能,這項技能可以讓你在函數(shù)式編程的路上走得更遠(yuǎn)。 slide 地址 三、可以,這很函數(shù)式~ showImg(https://segmentfault.com/img/remote/1460000015978685?w=187&h=160); 3.1.函數(shù)是一...
閱讀 2865·2021-07-30 15:30
閱讀 560·2019-08-30 15:55
閱讀 1627·2019-08-26 17:04
閱讀 639·2019-08-26 11:36
閱讀 2078·2019-08-26 10:58
閱讀 3556·2019-08-23 14:34
閱讀 1564·2019-08-22 18:48
閱讀 2532·2019-08-21 17:51