箭頭函數(shù)屬于es6。箭頭函數(shù)是ES6中引入的新特性,使用箭頭“=>”定義函數(shù),例“var f = v => v;”,等價(jià)于“var f = function (v) {return v;};”;如果箭頭函數(shù)不需要參數(shù)或需要多個(gè)參數(shù),就使用一個(gè)圓括號(hào)代表參數(shù)部分,例“var f = () => 5;”。
本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。
箭頭函數(shù)
箭頭函數(shù)是ES6中引入的新特性,使用“箭頭”(=>)定義函數(shù)。由于其簡(jiǎn)潔的語(yǔ)法和對(duì)this關(guān)鍵字的處理,箭頭函數(shù)迅速成為開(kāi)發(fā)者們最喜愛(ài)的功能。
var f = v => v; // 等同于 var f = function (v) { return v; };
如果箭頭函數(shù)不需要參數(shù)或需要多個(gè)參數(shù),就使用一個(gè)圓括號(hào)代表參數(shù)部分。
var f = () => 5; // 等同于 var f = function () { return 5 }; var sum = (num1, num2) => num1 + num2; // 等同于 var sum = function(num1, num2) { return num1 + num2; };
如果箭頭函數(shù)的代碼塊部分多于一條語(yǔ)句,就要使用大括號(hào)將它們括起來(lái),并且使用return語(yǔ)句返回。
var sum = (num1, num2) => { return num1 + num2; }
由于大括號(hào)被解釋為代碼塊,所以如果箭頭函數(shù)直接返回一個(gè)對(duì)象,必須在對(duì)象外面加上括號(hào),否則會(huì)報(bào)錯(cuò)。
// 報(bào)錯(cuò) let getTempItem = id => { id: id, name: "Temp" }; // 不報(bào)錯(cuò) let getTempItem = id => ({ id: id, name: "Temp" });
下面是一種特殊情況,雖然可以運(yùn)行,但會(huì)得到錯(cuò)誤的結(jié)果。
let foo = () => { a: 1 }; foo() // undefined
上面代碼中,原始意圖是返回一個(gè)對(duì)象{ a: 1 },但是由于引擎認(rèn)為大括號(hào)是代碼塊,所以執(zhí)行了一行語(yǔ)句a: 1。這時(shí),a可以被解釋為語(yǔ)句的標(biāo)簽,因此實(shí)際執(zhí)行的語(yǔ)句是1;,然后函數(shù)就結(jié)束了,沒(méi)有返回值。
如果箭頭函數(shù)只有一行語(yǔ)句,且不需要返回值,可以采用下面的寫法,就不用寫大括號(hào)了。
let fn = () => void doesNotReturn();
說(shuō)明:
箭頭函數(shù)是函數(shù)式編程的一種體現(xiàn),函數(shù)式編程將