箭頭函數(shù)

函數(shù)有兩種表示方法,一種是函數(shù)聲明,一種是函數(shù)表達(dá)式。

箭頭函數(shù)就是ES6提供一種簡(jiǎn)寫的函數(shù)表達(dá)式。

一般我們寫函數(shù)表達(dá)式是醬嬸兒的:

var a=function(a,b){return a-b;}

然后用了箭頭函數(shù)是醬嬸兒的:

var a=(a,b)=>a-b;

箭頭函數(shù)的規(guī)則:

1.如果箭頭函數(shù)不需要參數(shù)或需要多個(gè)參數(shù),就使用一個(gè)圓括號(hào)代表參數(shù)部分。

2.如果箭頭函數(shù)的代碼塊部分多于一條語(yǔ)句,就要使用大括號(hào)將它們括起來,并且使用return語(yǔ)句返回。

3.由于大括號(hào)被解釋為代碼塊,所以如果箭頭函數(shù)直接返回一個(gè)對(duì)象,必須在對(duì)象外面加上括號(hào),否則會(huì)報(bào)錯(cuò)。

4.

使用注意點(diǎn):

(1)函數(shù)體內(nèi)的this對(duì)象,就是定義時(shí)所在的對(duì)象,而不是使用時(shí)所在的對(duì)象。

this對(duì)象的指向是可變的,但是在箭頭函數(shù)中,它是固定的。

```

functionfoo(){setTimeout(()=>{console.log('id:',this.id);},100);}

var id=21;

foo.call({id:42});// id: 42

```

(2)不可以當(dāng)作構(gòu)造函數(shù),也就是說,不可以使用new命令,否則會(huì)拋出一個(gè)錯(cuò)誤。

(3)不可以使用arguments對(duì)象,該對(duì)象在函數(shù)體內(nèi)不存在。如果要用,可以用 rest 參數(shù)代替。

(4)不可以使用yield命令,因此箭頭函數(shù)不能用作 Generator 函數(shù)。

在ES6教程中有一個(gè)Pipeline的例子有點(diǎn)難理解,在這里翻譯下:

```

const pipeline=(...funcs)=>

?? val=>funcs.reduce((a,b)=>b(a),val);

const plus1=a=>a+1;

const mult2=a=>a*2;

const addThenMult=pipeline(plus1,mult2);

addThenMult(5)// 12

```

pipeline的參數(shù)是一個(gè)數(shù)組的擴(kuò)展,即將數(shù)組的每一個(gè)元素傳入。pipeline返回了一個(gè)參數(shù)為val的函數(shù)f1,f1的具體內(nèi)容是將傳入數(shù)組的元素按照reduce操作執(zhí)行,reduce的操作函數(shù)f2傳入?yún)?shù)一個(gè)是將a的輸出作為b的輸入,另一個(gè)是初始值val。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容