箭頭函數(shù)相當(dāng)于匿名函數(shù)较剃,簡(jiǎn)化了函數(shù)的定義
基本語(yǔ)法:
var func = x => x+1;
// 等價(jià)于var func = function(x){ return x+1; }
箭頭函數(shù)的其他形式:
a. 當(dāng)函數(shù)無(wú)參數(shù)時(shí)森渐,使用()括起來(lái)
var func = () => 1 + 2;
// 等價(jià)于var func = function(){ return 1+2; }
b. 當(dāng)參數(shù)只有一個(gè)時(shí)坏挠,()可以省略踢涌,如上面的基本語(yǔ)法
c. 當(dāng)參數(shù)有多個(gè)時(shí)比原,使用()括起來(lái)偿凭,且不可以省略
var func = (a,b) => a + b;
// 等價(jià)于var func = function(a,b){ return a+b; }
d. 當(dāng)函數(shù)體為多條語(yǔ)句時(shí),使用{}括起來(lái)两疚,且不可以省略
var func = num => {if(num<0)return 0;else{return num;}}
e. 當(dāng)返回值為對(duì)象字面量時(shí)床估,使用()將對(duì)象括起來(lái)
var func = season = > ({str:'summer',standard:'icecream'});
箭頭函數(shù)的特點(diǎn):
(1)this的指向問(wèn)題:指向箭頭函數(shù)的定義對(duì)象,而不是函數(shù)執(zhí)行的上下文诱渤,這里區(qū)別于上一篇js閉包丐巫,可以改寫如下
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var func = () => this.name;
return func();
}
};
alert(object.getNameFunc()); // 'My Object'
(2)不能使用new實(shí)例化'func'對(duì)象
(3)函數(shù)沒(méi)有arguments對(duì)象,不能使用arguments訪問(wèn)傳入?yún)?shù)