高階函式與ES6多箭頭函式(柯里化)

2021-10-02 23:16:37 字數 1650 閱讀 2565

所謂高階函式,就是乙個函式就可以接收另乙個函式作為引數,或者是返回乙個函式。

例如:

var

add=

function

add(a)

} 呼叫:add(2

)(3)即可獲得結果

常見的高階函式有map、reduce、filter、sort等

(1) map

map接受乙個函式作為引數,不改變原來的陣列,只是返回乙個全新的陣列

var arr =[1

,2,3

,4,5

]var arr1 = arr.

map(item => item =2)

// 輸出[1,1,1,1,1]

(2) reduce

reduce也是返回乙個全新的陣列。reduce接受乙個函式作為引數,這個函式要有兩個形參,代表陣列中的前兩項,reduce會將這個函式的結果與陣列中的第三項再次組成這個函式的兩個形參以此類推進行累積操作

var arr =[1

,2,3

,4,5

]var arr2 = arr.

reduce

((a,b)

=> a+b)

console.

log(arr2)

// 15

(3)filter

filter返回過濾後的陣列。filter也接收乙個函式作為引數,這個函式將作用於陣列中的每個元素,根據該函式每次執行後返回的布林值來保留結果,如果是true就保留,如果是false就過濾掉(這點與map要區分

var arr =[1

,2,3

,4,5

]var arr3 = arr.

filter

(item => item %2==

0)console.

log(arr3)

// [2,4]

(4)sort

實現對陣列中每項按照ascii碼大小進行排序

所謂多箭頭函式

指的是如下形式:

(a)

=>

(b)=>

(c)=>

等價於function

(a)}

}

根據所查資料得到的結論是:多個連續箭頭函式就是 es6的多次柯里化的寫法

而所謂柯里化指的是:把接受多個引數的函式變換成接受乙個單一引數的函式,並且返回(接受餘下的引數而且返回結果的)新函式的技術

=>n 個連續箭頭組成的函式實際上就是柯里化了 n - 1次。前 n - 1 次呼叫,其實是提前將引數傳遞進去,並沒有呼叫最內層函式體,最後一次呼叫才會呼叫最內層函式體,並返回最內層函式體的返回值。然後依次向外層函式執行

舉例:

funcs.

reduce

((left, right)

=>

(...args)

=>

right

(left

(...args)))

;

關於柯里化的部分資料**於:

從 ES6 高階箭頭函式理解函式柯里化

前言 第一次看到多個連續箭頭函式是在乙個 react 專案中,然鵝確認了下眼神,並不是對的人,因為看得一臉懵逼。em.於是開始各種搜尋,先是知道了多個連續箭頭函式就是 es6 的多次柯里化的寫法,對於函式柯里化,很久以前就知道這個名次,但是並不理解,也沒有去了解。為了弄明白多個連續箭頭函式,開始了簡...

es6箭頭函式

本例是在了解es6知識後在原來定義函式的基礎上進行理解var searchvalue 查詢匹配物件 var button var input var select button if searchvalue.input undefined button.click else 重新整理 tableli...

es6 箭頭函式

1.單引數 function cheng a 3 let cheng a 3 a a console.log cheng 9 2.多引數 function add a,b let add a,b a b 預設返回值 console.log add 3,9 3.無返回值 function add a,...