阮一峰 ES2015
給 JavaScript 初心者的 ES2015 實(shí)戰(zhàn)
ECMAScript 6(以下簡(jiǎn)稱ES6)是JavaScript語(yǔ)言的下一代標(biāo)準(zhǔn),已經(jīng)在2015年6月正式發(fā)布了笛质。它的目標(biāo)陆错,是使得JavaScript語(yǔ)言可以用來(lái)編寫復(fù)雜的大型應(yīng)用程序,成為企業(yè)級(jí)開(kāi)發(fā)語(yǔ)言剪侮。
標(biāo)準(zhǔn)的制定者有計(jì)劃拭宁,以后每年發(fā)布一次標(biāo)準(zhǔn)洛退,使用年份作為標(biāo)準(zhǔn)的版本。因?yàn)楫?dāng)前版本的ES6是在2015年發(fā)布的杰标,所以又稱ECMAScript 2015兵怯。也就是說(shuō),ES6就是ES2015腔剂,下一年應(yīng)該會(huì)發(fā)布小幅修訂的ES2016媒区。
ES6所帶來(lái)的更清晰的變量聲明與賦值語(yǔ)法。現(xiàn)今的變量聲明語(yǔ)法十分的直接:左邊是一個(gè)變量名掸犬,右邊可以是一個(gè)數(shù)組:[] 的表達(dá)式或一個(gè)對(duì)象:{} 的表達(dá)式袜漩,等等。解構(gòu)賦值允許我們將右邊的表達(dá)式看起來(lái)也像變量聲明一般湾碎,然后在左邊將值一一提取宙攻。
ES2015 箭頭函數(shù)
ES6允許使用“箭頭”(=>)定義函數(shù)。
var f = v => v;
上面的箭頭函數(shù)等同于:
var f = function(v)
{
return v;
};
由于大括號(hào)被解釋為代碼塊介褥,所以如果箭頭函數(shù)直接返回一個(gè)對(duì)象座掘,必須在對(duì)象外面加上括號(hào)。
var getTempItem = id => ({ id: id, name: "Temp" });
箭頭函數(shù)可以綁定this對(duì)象柔滔,大大減少了顯式綁定this對(duì)象的寫法(call溢陪、apply、bind)睛廊。但是形真,箭頭函數(shù)并不適用于所有場(chǎng)合,所以ES7提出了“函數(shù)綁定”(function bind)運(yùn)算符超全,用來(lái)取代call没酣、apply、bind調(diào)用卵迂。雖然該語(yǔ)法還是ES7的一個(gè)提案裕便,但是Babel轉(zhuǎn)碼器已經(jīng)支持。
函數(shù)綁定運(yùn)算符是并排的兩個(gè)雙冒號(hào)(::)见咒,雙冒號(hào)左邊是一個(gè)對(duì)象偿衰,右邊是一個(gè)函數(shù)。該運(yùn)算符會(huì)自動(dòng)將左邊的對(duì)象改览,作為上下文環(huán)境(即this對(duì)象)下翎,綁定到右邊的函數(shù)上面。