前言
箭頭函數(Fat arrow functions)是一個來自ECMAScript 2015(又稱ES6)的全新特性。
簡單的來說,是ES6版才有的新功能
箭頭函數的產生,主要為:更簡潔的語法 讓父類別共享關鍵字this。
這樣講可能有些許模糊,我們帶個下面的例子讓大家看一下就知道了。
傳統JavaScript 的寫法
傳統的JavaScript函數語法並沒有提供任何的靈活性,每一次你需要定義一個函數時,你都必須輸入function () {}。這樣的一個架構
但是在ES6版之後 為什麼大家的會這麼喜歡用它,有一個不可忽略的原因就是它有更簡潔的函數語法。
更簡潔的函數語法在有大量呼叫函數的情況下有特別明顯的好處。
以下例子的目的是使用jQuery來展示一個每秒都會更新的時鐘:
1 | $('.current-time').each(function () { |
但是當我想要在setInterval中使用this來引用DOM元素時,很不幸,我們得到的只是一個屬於函數自身的this。
而一個通常的解決辦法是定義一個that或者self變量:(如果不懂為什麼的話可以參考一下我之前撰寫過的一篇關於 JavaScript this的介紹文)
JavaScript - 淺談當前的this對象歸屬
但當使用了ES6當中的箭頭函數時,這個問題就不復存在了。因為它不產生屬於它自己函數內的this:
1 | $('.current-time').each(function () { |
就如同剛剛上面開頭所說的, 讓父類別共享關鍵字this 因此可以利用箭頭函數來達到我們所想的目的。
而箭頭函數就相當於匿名函數,並且簡化了函數定義。箭頭函數有兩種格式,一種像上面的,只包含一個表達式,連{ ... }
和return都省略掉了。還有一種可以包含多條語句,這時候就不能省略{ ... }
和return
:
1 | score => { |
有沒有發現和 lambda 表達式類似xD
arguments 屬性
然而在箭頭函數與普通函數還有一個區別就是,它沒有自己的arguments 屬性
在傳統的JavaScript 我們可以透過arguments Array 來取得函數的參數
1 | function Test(msg){ |
但是在箭頭函數當中,是沒有屬於自己的this 與 arguments Array ,有興趣的人可以試試看以下的程式碼就可以了解了:
1 | function TT(msg){ |
有任何家教、案子 或技術相關問題 請都歡迎聯繫我