JavaScript 箭頭函式
它變得更短了!如果函式只有一個語句,並且該語句返回值,則可以刪除大括號和return
關鍵字
注意:這僅在函式只有一個語句時才有效。
如果你有引數,則將它們放在括號內
事實上,如果你只有一個引數,你也可以省略括號
關於 this
呢?
與常規函式相比,箭頭函式中 this
的處理方式也不同。
簡而言之,箭頭函式沒有 this
的繫結。
在常規函式中,this
關鍵字代表呼叫函式的物件,它可以是 window、document、按鈕或其他任何物件。
使用箭頭函式時,this
關鍵字始終代表定義箭頭函式的物件。
讓我們看兩個例子來理解其中的區別。
兩個示例都呼叫了一個方法兩次,一次是在頁面載入時,另一次是在使用者單擊按鈕時。
第一個示例使用常規函式,第二個示例使用箭頭函式。
結果顯示第一個示例返回兩個不同的物件(window 和 button),而第二個示例返回 window 物件兩次,因為 window 物件是該函式的“所有者”。
示例
使用常規函式時,this
代表呼叫函式的物件
// Regular Function
hello = function() {
document.getElementById("demo").innerHTML += this;
}
// The window object calls the function
window.addEventListener("load", hello);
// A button object calls the function
document.getElementById("btn").addEventListener("click", hello);
示例
使用箭頭函式時,this
代表函式的所有者
// Arrow Function
hello = () => {
document.getElementById("demo").innerHTML += this;
}
// The window object calls the function
window.addEventListener("load", hello);
// A button object calls the function
document.getElementById("btn").addEventListener("click", hello);
在處理函式時,請記住這些區別。有時常規函式的行為是你想要的,如果不是,則使用箭頭函式。
瀏覽器支援
下表定義了第一個完全支援 JavaScript 中箭頭函式的瀏覽器版本
Chrome 45 | Edge 12 | Firefox 22 | Safari 10 | Opera 32 |
2015 年 9 月 | 2015 年 7 月 | 2013 年 5 月 | 2016 年 9 月 | 2015 年 9 月 |