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

首頁 > 語言 > JavaScript > 正文

JavaScript函數式編程(Functional Programming)高階函數(Higher order fun

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

本文實例講述了JavaScript函數式編程(Functional Programming)高階函數(Higher order functions)用法。分享給大家供大家參考,具體如下:

高階函數(higher-order functions),就是返回其它函數的函數,或者使用其它函數作為它的參數的函數。

使用函數作為參數

因為函數本身就是一個值,所以可以讓函數作為參數傳遞給其它的函數。JavaScript 有些函數就需要用到函數類型的參數,比如 Array.map。

比如我有一組數據:

const names = ['小貓', '小狗', '小刺猬']

我要分別問候一下這組數據里的每個項目:

const greetings = names.map(function(name) { return `hi ~ ${name}`})console.log(greetings)// ["hi ~ 小貓", "hi ~ 小狗", "hi ~ 小刺猬"]

上面的 map 方法里用了一個匿名函數作為它的參數。在這個函數里面,我們在數組里的每個項目的前面都加上了一個 “hi ~” ,map 會返回一個新的數組,這個數組我交給了 greetings 變量。

用箭頭函數會更簡潔一些:

const greetings = names.map(name => `hi ~ ${name}`)

高階函數

高階函數(higher-order functions)。在 JavaScript 里面,函數跟普通的對象沒啥大區別,所以你可以讓函數作為參數傳遞到其它的函數里面,你也可以在函數里返回函數。使用函數作為參數的函數,或者返回函數的函數,這些函數被稱為高階函數(higher-order functions)。

比如剛才我們用的 map 就是一個高階函數,因為它會用到一個函數作為它的參數。

再看一個例子:

const robot = (name, action) => { return action(name)}const greet = (name) => { return `hello, ${name}`}const greeting = robot(' 您好 ', greet)// 返回 “ hello, 您好 ”

robot 是個函數,它支持兩個參數,name 與 action,這里的 action 參數的類型是一個函數。在 robot 里面返回了 action ,并且把 name 參數的值交給了 action。接下面我們又定義了一個函數叫 greet,它接受一個參數是 name ,這個函數會返回一個字符串。

然后我們用了一下 robot 這個函數,設置了一下它的兩個參數的值,name 參數的值是 ' 您好 ‘,action 參數的值是我們定義的 greet 這個函數。執行的結果就會是:

hello, 您好

我們可以再去定義一下函數:

const goodbye = (name) => { return `bye, ${name}`}

然后再用一下 robot 函數:

const byeBye = robot(' 您好 ', goodbye)

這次會返回:

bye, 您好

完整的例子:

const robot = (name, action) => { return action(name)}const greet = (name) => { return `hello, ${name}`}const greeting = robot(' 您好 ', greet)console.log(greeting)const goodbye = (name) => { return `bye, ${name}`}const byeBye = robot(' 您好 ', goodbye)console.log(byeBye)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 深州市| 江安县| 万山特区| 梁平县| 宝丰县| 改则县| 兴隆县| 南平市| 澄城县| 海晏县| 衡南县| 屏南县| 福贡县| 诏安县| 政和县| 呼图壁县| 滁州市| 洪雅县| 特克斯县| 长葛市| 吴江市| 石渠县| 云林县| 绩溪县| 湘潭县| 鄂托克前旗| 长春市| 五指山市| 双江| 科技| 观塘区| 临洮县| 固始县| 合水县| 谷城县| 榆林市| 明水县| 渭源县| 铜川市| 清涧县| 喀喇|