《實戰ES2015》之箭頭函數

《實戰ES2015》之箭頭函數

《實戰ES2015》之箭頭函數

箭頭函數,顧名思義便是使用箭頭(=>)進行定義的函數,屬於匿名函數(AnonymousFunction)一類。當然了,它也可以作為定義式函數使用,但我們並不推薦這樣做,隨後會詳細解釋。

使用語法

箭頭函數有四種使用語法

單一參數的單行箭頭函數

《實戰ES2015》之箭頭函數

這是箭頭函數最簡潔的形式,常見於用作簡單的處理函數,如過濾。

《實戰ES2015》之箭頭函數

多參數的單箭頭函數

《實戰ES2015》之箭頭函數

在大多數情況下,函數都不會只有一個參數傳入,在箭頭函數中,多參數的語法跟普通函數一樣,以括號來包裹參數列。這種形式常見於數組的處理,如排序。

《實戰ES2015》之箭頭函數

多行箭頭函數

《實戰ES2015》之箭頭函數

無參數箭頭函數

如果一個箭頭函數無參數傳入,則需要用一對空的括號來表示空的參數列表。

《實戰ES2015》之箭頭函數

以上都是被支持的箭頭函數表達式,其最大的好處便是簡潔明瞭,省略了function關鍵字,而使用 => 代替。相對於傳統的function語句,箭頭函數在簡單的函數使用中更為簡介直觀。

this穿透

事實上,箭頭函數在ES2015標準中,並不只是作為一種簡單的語法糖出現。就如同它在CoffeeScript中的定義一般,是用於將函數內部的this延伸至上一層作用域中,即上一層的上下文會穿透到內層的箭頭函數中,我們可以以一段代碼來簡單解釋。

《實戰ES2015》之箭頭函數

因為箭頭函數綁定上下文的特性,故不能隨意在頂層作用域使用箭頭函數,以防出現下面的錯誤。

《實戰ES2015》之箭頭函數

同樣的,在箭頭函數中也沒有arguments、callee甚至caller等對象。

《實戰ES2015》之箭頭函數

如果有使用anguments的需求,可以使用後續參數來取得參數列表。

《實戰ES2015》之箭頭函數

編寫語法注意事項

請不要對單行的函數體做任何換行

《實戰ES2015》之箭頭函數

參數列表的右括弧、箭頭需要保持在同一行內。

《實戰ES2015》之箭頭函數

若要使用單行箭頭函數直接返回一個對象字面量,請使用一個括號包裹該對面字面量,而不是直接使用大括號,否則ECMAScript解析引擎會將其解析為一個多行箭頭函數。

《實戰ES2015》之箭頭函數

希望這篇文章能給你帶來知識和樂趣,喜歡作者的文章可以加關注哦


分享到:


相關文章: