javascript
如何理解JavaScript多个连续箭头函数书写方式
導(dǎo)言: 本菜雞在學(xué)習(xí)Vue編程的時候,看到有大佬寫的代碼用了多個連續(xù)箭頭函數(shù),完全不能理解是什么意思。經(jīng)過多方調(diào)查和思考才初步理解。本篇文章記錄一下自己學(xué)習(xí)和理解的心得。
有多個箭頭函數(shù)的代碼如何執(zhí)行
我拿一個很普通的函數(shù)來舉例子,比如下面代碼:
function sum (a, b) {return a + b; }或者是這樣:
let sum = function (a, b) { a + b }如果要寫成箭頭函數(shù)可以寫成這樣:
let sum = (a, b) => a + b因為只有一行代碼,所以對于箭頭函數(shù),我們可以省略大括號和return,但是箭頭函數(shù)只能寫成對象字面量的形式。
如果寫成多個箭頭函數(shù),是這個樣子的:
let sum = a => b => a + b alert(sum(1)(2))實現(xiàn)的是和sum函數(shù)一樣的功能。我們使用Typescript練習(xí)模式可以看到上述代碼轉(zhuǎn)換成的ES5代碼:
var sum = function (a) { return function (b) { return a + b; }; }; alert(sum(1)(2));我們看這個代碼可以理解了多個箭頭函數(shù)的具體執(zhí)行了,有一個匿名函數(shù)其參數(shù)為a,該匿名函數(shù)里面又有一個匿名函數(shù)其參數(shù)為b。經(jīng)過兩層嵌套調(diào)用和返回之后,返回最終的sum結(jié)果。但我們看到sum代碼,明明寫成一個箭頭函數(shù)就可以解決問題,為什么要寫成多個箭頭函數(shù)的形式?不好理解,是否多此一舉?
為什么要寫成多個箭頭函數(shù)的形式
如果你了解柯里化的知識的話,就會發(fā)現(xiàn),多個箭頭函數(shù)就是一種柯里化的表現(xiàn)形式。
柯里化(Currying)是一種關(guān)于函數(shù)的高階技術(shù)。它不僅被用于 JavaScript,還被用于其他編程語言。
柯里化是一種函數(shù)的轉(zhuǎn)換,它是指將一個函數(shù)從可調(diào)用的 f(a, b, c) 轉(zhuǎn)換為可調(diào)用的 f(a)(b)(c)
那柯里化有什么意義呢?和偏函數(shù)有關(guān)。簡單來說,可以讓你可以提前傳遞部分參數(shù),實現(xiàn)函數(shù)再調(diào)用函數(shù)。更具體講解可以看參考3的內(nèi)容。
參考資料
[1] ES6多重箭頭函數(shù)
[2] MDN箭頭函數(shù)
[3] 柯里化(Currying)
總結(jié)
以上是生活随笔為你收集整理的如何理解JavaScript多个连续箭头函数书写方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 写给初学者的JavaScript异步编程
- 下一篇: 从Vuex的Actions中理解Java