ECMAScript 6學(xué)習(xí)筆記(一):展開(kāi)運(yùn)算符.md

Javascript 是 ECMAScript 的實(shí)現(xiàn)和擴(kuò)展闯两,ES6標(biāo)準(zhǔn)的制定也為Javascript 加入了許多新特性,本文主要記錄展開(kāi)運(yùn)算符重慢。

展開(kāi)運(yùn)算符允許一個(gè)表達(dá)式在某處展開(kāi)逊躁。展開(kāi)運(yùn)算符在多個(gè)參數(shù)(用于函數(shù)調(diào)用)或多個(gè)元素(用于數(shù)組字面量)或者多個(gè)變量(用于解構(gòu)賦值)的地方可以使用。

展開(kāi)運(yùn)算符不能用在對(duì)象當(dāng)中核芽,因?yàn)槟壳罢归_(kāi)運(yùn)算符只能在可遍歷對(duì)象(iterables)可用酵熙。iterables實(shí)現(xiàn)是依靠[Symbol.iterator]函數(shù),而目前只有 Array吉懊,Set假勿,String內(nèi)置 [Symbol.iterator] 方法,而 Object 尚未內(nèi)置該方法恶导,因此無(wú)法使用展開(kāi)運(yùn)算符浸须。不過(guò) ES7 草案當(dāng)中已經(jīng)加入了對(duì)象展開(kāi)運(yùn)算符特性。

函數(shù)調(diào)用中使用展開(kāi)運(yùn)算符

  • 在以前我們會(huì)使用 apply 方法來(lái)將一個(gè)數(shù)組展開(kāi)成多個(gè)參數(shù)
function test(a, b, c) { }
var args = [0, 1, 2];
test.apply(null, args);

如上裂垦,我們把 args 數(shù)組當(dāng)作實(shí)參傳遞給了 a, b, c肌索,這邊正是利用了 Function.prototype.apply 的特性诚亚。

不過(guò)有了 ES6,我們就可以更加簡(jiǎn)潔地來(lái)傳遞數(shù)組參數(shù):

function test(a, b, c) {}
var args = [0, 1, 2];
test(...args);

我們使用...展開(kāi)運(yùn)算符就可以把 args 直接傳遞給 test() 函數(shù)闸准。

數(shù)組字面量中使用展開(kāi)運(yùn)算符

  • 在ES6的世界中梢灭,我們可以直接加一個(gè)數(shù)組直接合并到另外一個(gè)數(shù)組當(dāng)中:
var arr1 = [ 'a', 'b', 'c' ];
var arr2 = [ ...arr1, 'd', 'e' ];  // [ 'a', 'b', 'c', 'd', 'e' ]
  • 展開(kāi)運(yùn)算符符也可以用在push 函數(shù)中腕唧,可以不用再用 apply() 函數(shù)來(lái)合并兩個(gè)數(shù)組:
var arr1 = [ 'a', 'b', 'c' ] 
var arr2 = [ ...arr1, 'd', 'e' ]  // //['a','b','c','d','e']

用于解構(gòu)賦值

解構(gòu)賦值也是ES6 中的一個(gè)特性瘾英,而這個(gè)展開(kāi)運(yùn)算符可以用于部分情景:

let [arg1, arg2, ...arg3] = [1, 2, 3, 4];
arg1  // 1
arg2  // 2
arg3  // [ '3', '4' ]

展開(kāi)運(yùn)算符在解構(gòu)賦值中的作用跟之前的作用看上去是相反的缺谴,將多個(gè)數(shù)組組合成了一個(gè)新數(shù)組。
不過(guò)要注意湿蛔,解構(gòu)賦值中展開(kāi)運(yùn)算符只能用在最后:

let [arg1,...arg2,arg3] = [1, 2, 3, 4]; //報(bào)錯(cuò)

ES7草案中的對(duì)象展開(kāi)運(yùn)算符

ES7 中的對(duì)象展開(kāi)運(yùn)算符可以讓我們更快捷的操作對(duì)象

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4};
x // 1
y // 2
z // { a: 3, b: 4 }

如上阳啥,我們可以將一個(gè)對(duì)象當(dāng)中的對(duì)象的一部分取出來(lái)成為一個(gè)新對(duì)象賦值給展開(kāi)運(yùn)算符的參數(shù)。

同時(shí)斩狱,我們也可以像數(shù)組插入那樣將一個(gè)對(duì)象插入另外一個(gè)對(duì)象當(dāng)中:

let z = { a: 3, b: 4};
let n = { x: 1, y: 2, ...z};
n // {x:1,y:2,a:3,b:4}

另外還要很多用處扎瓶,比如可以合并兩個(gè)對(duì)象

let a = { x: 1, y: 2 };
let b = { z: 3 };
let ab = { ...a, ...b };
ab // { x: 1, y:2, z: 3 }

轉(zhuǎn)載地址:http://www.cnblogs.com/mingjiezhang/p/5903026.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末概荷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子继薛,更是在濱河造成了極大的恐慌愈捅,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诈皿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡壶冒,警方通過(guò)查閱死者的電腦和手機(jī)胖腾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)瘪松,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)锨阿,“玉大人墅诡,你說(shuō)我怎么就攤上這事∧┰纾” “怎么了然磷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)寡润。 經(jīng)常有香客問(wèn)我舅柜,道長(zhǎng),這世上最難降的妖魔是什么栗柒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任瞬沦,我火速辦了婚禮雇锡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘曙痘。我一直安慰自己立肘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布茧痒。 她就那樣靜靜地躺著融蹂,像睡著了一般弄企。 火紅的嫁衣襯著肌膚如雪区拳。 梳的紋絲不亂的頭發(fā)上樱调,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音业汰,去河邊找鬼菩颖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛放祟,可吹牛的內(nèi)容都是我干的呻右。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼眉撵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼落塑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起污朽,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蟆肆,失蹤者是張志新(化名)和其女友劉穎晦款,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體亡问,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肛宋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年酝陈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了床玻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沉帮,死狀恐怖锈死,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情穆壕,我是刑警寧澤待牵,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站喇勋,受9級(jí)特大地震影響缨该,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜川背,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一贰拿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膨更,春花似錦、人聲如沸缴允。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)练般。三九已至健蕊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踢俄,已是汗流浹背缩功。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留都办,地道東北人嫡锌。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像琳钉,于是被迫代替她去往敵國(guó)和親势木。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 三歌懒,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進(jìn)啦桌,只要將碼點(diǎn)放入大括號(hào),就能正確解讀該字符。有了這...
    eastbaby閱讀 1,514評(píng)論 0 8
  • ES6標(biāo)準(zhǔn)的制定為JavaScript加入了許多新特性甫男。本文主要記錄擴(kuò)展(展開(kāi))運(yùn)算符且改。 展開(kāi)運(yùn)算符(spread...
    周三胖閱讀 701評(píng)論 0 1
  • JavaScript是ECMAScript的實(shí)現(xiàn)和擴(kuò)展,ES6標(biāo)準(zhǔn)的制定也為JavaScript加入了許多新特性板驳。...
    hope7th閱讀 5,318評(píng)論 0 0
  • 一又跛、let 和 constlet:變量聲明, const:只讀常量聲明(聲明的時(shí)候賦值)。 let 與 var 的...
    dadage456閱讀 757評(píng)論 0 0
  • 被打擊若治,總是容易變得低落慨蓝。 這幾天工作上陸續(xù)被打擊,后來(lái)想通了端幼,大家各自的觀點(diǎn)不同而已礼烈。 那些挑剔的人們,有他們的...
    牧田麻麻閱讀 209評(píng)論 0 0