JavaScript 箭頭函數
- 上一頁 JS this 關鍵詞
- 下一頁 JS 類
ES6 中引入了箭頭函數。
箭頭函數允許我們編寫更短的函數:
語法
let myFunction = (a, b) => a * b;
之前:
hello = function() { return "Hello World!"; }
用了箭頭函數之后:
hello = () => { return "Hello World!"; }
確實變短了!如果函數只有一個語句,并且該語句返回一個值,則可以去掉括號和 return
關鍵字:
箭頭函數默認返回值:
hello = () => "Hello World!";
注釋:這僅在函數只有一條語句時才有效。
如果您有參數,則將它們傳遞到括號內:
帶參數的箭頭函數:
hello = (val) => "Hello " + val;
事實上,如果只有一個參數,您也可以略過括號:
不帶括號的箭頭函數:
hello = val => "Hello " + val;
this
怎么辦?
與常規函數相比,箭頭函數對 this
的處理也有所不同。
簡而言之,使用箭頭函數沒有對 this
的綁定。
在常規函數中,關鍵字 this
表示調用該函數的對象,可以是窗口、文檔、按鈕或其他任何東西。
對于箭頭函數,this
關鍵字始終表示定義箭頭函數的對象。
讓我們看兩個例子來理解其中的差異。
這兩個例子都調用了兩次方法,第一次是在頁面加載時,第二次是在用戶單擊按鈕時。
第一個例子使用常規函數,第二個例子使用箭頭函數。
結果顯示第一個例子返回兩個不同的對象(window 和 button),第二個例子返回兩次 window 對象,因為 window 對象是函數的“所有者”。
實例
對于常規函數,this 表示調用該函數的對象:
// 常規函數: hello = function() { document.getElementById("demo").innerHTML += this; } // window 對象調用該函數: window.addEventListener("load", hello); // button 對象調用該函數: document.getElementById("btn").addEventListener("click", hello);
實例
用了箭頭函數,則 this
表示函數的擁有者:
// 箭頭函數: hello = () => { document.getElementById("demo").innerHTML += this; } // window 對象調用該函數: window.addEventListener("load", hello); // button 對象調用該函數: document.getElementById("btn").addEventListener("click", hello);
使用函數時請記住這些差異。有時,常規函數的行為正是您想要的,如果不是,請使用箭頭函數。
瀏覽器支持
下表注明了首個完全支持 JavaScript 箭頭函數的瀏覽器版本:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 45 | Edge 12 | Firefox 22 | Safari 10 | Opera 32 |
2015 年 9 月 | 2015 年 7 月 | 2013 年 5 月 | 2016 年 9 月 | 2015 年 9 月 |
- 上一頁 JS this 關鍵詞
- 下一頁 JS 類