1. 箭頭函數比普通函數更加簡潔
如果沒有參數,就直接寫一個空括號即可如果只有一個參數,可以省去參數的括號如果有多個參數,用逗號分割如果函數體的返回值只有一句,可以省略大括號如果函數體不需要返回值,且只有一句話,可以給這個語句前面加一個void關鍵字。最常見的就是調用一個函數:
2. 箭頭函數沒有自己的this
箭頭函數不會創建自己的this, 所以它沒有自己的this,它只會在自己作用域的上一層繼承this。所以箭頭函數中this的指向在它在定義時已經確定了,之后不會改變。
3. 箭頭函數繼承來的this指向永遠不會改變
對象obj的方法b是使用箭頭函數定義的,這個函數中的this就永遠指向它定義時所處的全局執行環境中的this,即便這個函數是作為對象obj的方法調用,this依舊指向Window對象。需要注意,定義對象的大括號{}是無法形成一個單獨的執行環境的,它依舊是處于全局執行環境中。
4. call()、apply()、bind()等方法不能改變箭頭函數中this的指向
5. 箭頭函數不能作為構造函數使用
構造函數在new的步驟在上面已經說過了,實際上第二步就是將函數中的this指向該對象。 但是由于箭頭函數時沒有自己的this的,且this指向外層的執行環境,且不能改變指向,所以不能當做構造函數使用。
6. 箭頭函數沒有自己的arguments
箭頭函數沒有自己的arguments對象。在箭頭函數中訪問arguments實際上獲得的是它外層函數的arguments值。
7. 箭頭函數沒有prototype
8. 箭頭函數不能用作Generator函數,不能使用yeild關鍵字