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