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