ES6中的箭頭函數(之前確實是通過阮一峯老師的書籍學過,但是學的很模糊哦,嗚嗚嗚)
基本語法:(參數)=>{函數內容}
注意:箭頭必須和參數在同一行(顯然這也是必要的)
如果只有一個參數,則括號()可以省略,如果函數只有一個語句,則{}可以省略,另外後者的寫法將會默認return其屬性但不需要手寫return(但是這個寫法,在返回對象爲{}對象字面量(注意此處對象的含義,咳咳)時必須加上return語句,以免造成語句的歧義)
()=>{return {AX:666}};
箭頭函數常用在將函數作爲另一個函數的參數時使用,比如用在setTimeout
以及setTimeIntervals
中
箭頭函數有以下幾個特點:
1.不綁定this
這意味着在箭頭函數中的this總是指向上一作用域之中,也就是指向之前作用域所指向的對象(若之前也沒有,就沿着作用域鏈往上搜索this)
因此,在定義方法時,如果想要使用箭頭函數,那麼這個函數儘量不要使用到this,或者要使用,也必須要確保使用的this是上一作用域的。
2.沒有arguments對象
不能通過arguments對象來調用輸入參數。
個人認爲箭頭函數一般都是寫死在屬性中,或者本身就是參數,也就沒有一定要明確輸入參數的必要。
3.不能作爲生成器和構造器:
也就是說因爲箭頭函數沒有this,沒法構造對象和生成對象(箭頭函數不能使用yield關鍵字)
4.沒有原型
let fn=()=>{};
console.log(fn.propotype);//undefinded