1、箭頭函數沒有自己的this,arguments,super或new.target。
2、它的this、arguments都是在定義函數時綁定外層的this和arguments,而不是在執行過程中綁定的,所以不會因為調用者不同而發生變化。
3、箭頭函數若想得到自身的入參列表arguments,必須使用剩余參數表示法。
4、箭頭函數表達式更適用於那些本來需要匿名函數的地方,並且它不能用作構造函數。
下面我們以arguments為例進行驗證,this同理
var obj = {}; obj.fn = function(){ let arrow = (...args) =>{ console.log('入參列表 : ', arguments); //外層的入參列表 console.log('剩余參數 : ', args); //使用剩余參數表示法獲得的自身入參列表 } arrow(4,5,6) } obj.fn(1,2,3)
以下是輸出結果
入參列表 : Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
剩余參數 : (3) [4, 5, 6]
由上述驗證我們可以發現箭頭函數arrow使用arguments獲取入參列表時,實際上得到的是外層函數的arguments。而this也是一個道理。