日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

如何理解JavaScript多个连续箭头函数书写方式

發(fā)布時間:2025/4/16 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何理解JavaScript多个连续箭头函数书写方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。