ES6新特性箭頭函數(shù)語(yǔ)法以及與ES5普通函數(shù)的不同

一偷崩、箭頭函數(shù)語(yǔ)法

ES6標(biāo)準(zhǔn)新增了一種新的函數(shù):Arrow Function(箭頭函數(shù))脱吱。

x => x * x   
//上面為箭頭函數(shù)寫(xiě)法,相當(dāng)于下面原來(lái)函數(shù)的寫(xiě)法
function (x) {
    return x * x;
}

箭頭函數(shù)相當(dāng)于匿名函數(shù)质涛,并且簡(jiǎn)化了函數(shù)定義稠歉。箭頭函數(shù)有兩種格式,一種像上面的汇陆,只包含一個(gè)表達(dá)式怒炸,連{ ... }和return都省略掉了。還有一種可以包含多條語(yǔ)句毡代,這時(shí)候就不能省略{ ... }和return:

x => {
    if (x > 0) {
        return x * x;
    }
    else {
        return - x * x;
    }
}

如果參數(shù)不是一個(gè)阅羹,就需要用括號(hào)()括起來(lái):

// 兩個(gè)參數(shù):
(x, y) => x * x + y * y

// 無(wú)參數(shù):
() => 3.14

// 可變參數(shù):
(x, y, ...rest) => {
    var i, sum = x + y;
    for (i=0; i<rest.length; i++) {
        sum += rest[i];
    }
    return sum;
}

如果要返回一個(gè)對(duì)象,就要注意教寂,如果是單表達(dá)式捏鱼,這么寫(xiě)的話(huà)會(huì)報(bào)錯(cuò):

x => ({ foo: x })

二、箭頭函數(shù)與普通函數(shù)(function)區(qū)別

1酪耕、寫(xiě)法上的不同

使用ES6箭頭函數(shù)語(yǔ)法定義函數(shù)导梆,將原函數(shù)的“function”關(guān)鍵字和函數(shù)名都刪掉,并使用“=>”連接參數(shù)列表和函數(shù)體迂烁。當(dāng)函數(shù)參數(shù)只有一個(gè)看尼,括號(hào)可以省略;但是沒(méi)有參數(shù)時(shí)婚被,括號(hào)不可以省略狡忙。

function fun(x, y) {
    return x + y;
}

(a, b) => {
    return a + b
}
//省略寫(xiě)法
a =>  a 

2、普通函數(shù)的參數(shù)是arguments址芯,而箭頭函數(shù)是arg

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

const test1=(...numbers)=>{
  console.log(numbers)      
  console.log(arguments)
}
const test2=function(){
  console.log(arguments)
}
test1(123);//分別輸出 [123]  報(bào)錯(cuò)
test2(123);//分別輸出 Arguments 

3、函數(shù)內(nèi)this的指向不同

在箭頭函數(shù)出現(xiàn)之前旬陡,每個(gè)新定義的普通函數(shù)(function)都有他自己的this值拓颓,箭頭函數(shù)沒(méi)有自己的 this,它里面的 this 是繼承所屬上下文中的 this描孟。
由于箭頭函數(shù)沒(méi)有自己的this指針驶睦,通過(guò)call()、apply()方法調(diào)用時(shí)匿醒,第一個(gè)參數(shù)會(huì)被忽略场航。
關(guān)于call()和apply():

JavaScript中的每一個(gè)Function對(duì)象都有一個(gè)apply()方法和一個(gè)call()方法apply調(diào)用一個(gè)對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象廉羔。例如:B.apply(A, arguments)溉痢;即A對(duì)象調(diào)用B對(duì)象的方法。func.apply(thisArg, [argsArray])
call調(diào)用一個(gè)對(duì)象的一個(gè)方法憋他,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象孩饼。例如:B.call(A,args1,args2);即A對(duì)象調(diào)用B對(duì)象的方法竹挡。func.call(thisArg, arg1, arg2, ...)

//使用function定義的函數(shù)
function foo(){
    console.log(this);
}

foo(); //Window

//使用箭頭函數(shù)定義函數(shù)
var foo = () => { console.log(this) };

foo(); //Window

4镀娶、function是可以定義構(gòu)造函數(shù)的,而箭頭函數(shù)是不行的

/使用function方法定義構(gòu)造函數(shù)
function Dog(name, color){
    this.name = name;
    this.color= color;
}
var newDog=  new Dog('demon', black);
console.log(newDog); //{name: 'demon', color: black}

//嘗試使用箭頭函數(shù)
var Dog= (name, color) =>{
    this.name = name;
    this.color= color;
};
var newDog= new Dog('demon', black); //Uncaught TypeError: Dogis not a constructor
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揪罕,一起剝皮案震驚了整個(gè)濱河市汽畴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耸序,老刑警劉巖忍些,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異坎怪,居然都是意外死亡罢坝,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)搅窿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嘁酿,“玉大人,你說(shuō)我怎么就攤上這事男应∧炙荆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵沐飘,是天一觀(guān)的道長(zhǎng)游桩。 經(jīng)常有香客問(wèn)我牲迫,道長(zhǎng),這世上最難降的妖魔是什么借卧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任盹憎,我火速辦了婚禮,結(jié)果婚禮上铐刘,老公的妹妹穿的比我還像新娘陪每。我一直安慰自己,他們只是感情好镰吵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布檩禾。 她就那樣靜靜地躺著,像睡著了一般疤祭。 火紅的嫁衣襯著肌膚如雪盼产。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天画株,我揣著相機(jī)與錄音辆飘,去河邊找鬼。 笑死谓传,一個(gè)胖子當(dāng)著我的面吹牛蜈项,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播续挟,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼紧卒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了诗祸?” 一聲冷哼從身側(cè)響起跑芳,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎直颅,沒(méi)想到半個(gè)月后博个,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡功偿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年盆佣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片械荷。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡共耍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吨瞎,到底是詐尸還是另有隱情痹兜,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布颤诀,位于F島的核電站字旭,受9級(jí)特大地震影響对湃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谐算,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一熟尉、第九天 我趴在偏房一處隱蔽的房頂上張望归露。 院中可真熱鬧洲脂,春花似錦、人聲如沸剧包。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疆液。三九已至一铅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間堕油,已是汗流浹背潘飘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掉缺,地道東北人卜录。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像眶明,于是被迫代替她去往敵國(guó)和親艰毒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359