es5與es6常用語法教程(4)

js常用語法系列教程如下

展開操作符(spread)

展開運算符(spread operator)允許一個表達式在某處展開归园。展開運算符在多個參數(shù)(用于函數(shù)調(diào)用)或多個元素(用于數(shù)組字面量)或者多個變量(用于解構(gòu)賦值)的地方可以使用。

函數(shù)調(diào)用中使用展開運算符

在以前我們會使用apply方法來將一個數(shù)組展開成多個參數(shù):

function test(a, b, c) {
  console.log(a, b, c) // 輸出 0 1 2
}
var args = [0, 1, 2]
test.apply(null, args)

上面代碼塊中言秸,我們把args數(shù)組當作實參傳遞給了a,b,c岩齿,這邊正是利用了Function.prototype.apply的特性唱遭。

不過ES6有了展開運算符,我們就可以更加簡潔地來傳遞數(shù)組參數(shù):

function test(a, b, c) {
  console.log(a, b, c) // 輸出 0 1 2
}
var args = [0, 1, 2]

test(...args)

我們使用...xxx展開運算符就可以把args展開直接傳遞給test()函數(shù)

數(shù)組字面量中使用展開運算符

  • 在ES6中,我們可以直接將一個數(shù)組合并到另一個數(shù)組中
let arr1 = ['a', 'b', 'c']
let arr2 = [...arr1, 'd', 'e']

console.log(arr2) // 輸出:["a", "b", "c", "d", "e"] 

  • 展開運算符也可以用在push函數(shù)中旨怠,以后不需再用apply()函數(shù)來合并兩個數(shù)組
let arr1=['a', 'b', 'c']
let arr2=['d', 'e']
arr2.push(...arr1)
console.log(arr2) // 輸出:["d", "e", "a", "b", "c"]

用于解構(gòu)賦值(rest)

  • 解構(gòu)賦值也是ES6中的一個特性,而展開運算符可以用于部分情景
let [arg1, arg2, ...arg3] = [1, 2, 3, 4]
console.log(arg1) // 1
console.log(arg2) // 2
console.log(arg3) // [3, 4]

注意點:

  • 展開運算符在解構(gòu)賦值中的作用跟上面的展開作用看上去是相反的蜈块,它是將多個元素合成了一個新數(shù)組鉴腻。
  • 解構(gòu)賦值中展開運算符只能用在最后面迷扇,不能用在其他的位置
  • 下面的用法就會報語法錯誤
let [arg1, ...arg2, arg3] = [1, 2, 3, 4]
console.log(arg1)
console.log(arg2)
console.log(arg3)

類數(shù)組對象變成數(shù)組

  • 展開運算符可以將一個類數(shù)組對象變成一個真正的數(shù)組對象
let list = document.getElementsByTagName('div')
let arr = [...list]
console.log(arr)
  • list是類數(shù)組對象,通過使用展開運算符將其變成了數(shù)組對象

對象展開運算符(ES7)

  • ES7中的對象展開運算符可以更快捷地操作對象
let {x, y, ...z} = {x: 1, y: 2, a: 3, b: 4}
console.log(x) // 1
console.log(y) // 2
console.log(z) // {a: 3, b: 4}
  • 如上面的代碼塊爽哎,我們可以將一個對象中的一部分抽取出來蜓席,成為一個新對象賦值給展開運算符
  • 我們也可以像數(shù)組中插入數(shù)組那樣將一個對象插入到另外一個對象中
let z = {a: 3, b: 4}
let n = {x: 1, y: 2, ...z}
console.log(n) // {x: 1, y: 2, a: 3, b: 4}
  • 合并兩個對象
let a = {x: 1, y: 2}
let b = {z: 3}
let c = {...a, ...b}
console.log(c) // {x: 1, y: 2, z: 3}

剩余操作符(rest)

  • rest操作符用在函數(shù)的參數(shù)內(nèi),將剩余的參數(shù)放到foods數(shù)組中
function breakfast(dessert, drink, ...foods) {
  console.log(dessert) // ??
  console.log(drink) // ??
  console.log(foods) // ["??", "??"]
}

breakfast ('??', '??', '??', '??')

注意點:

  • 和上面的解構(gòu)賦值一樣课锌,剩余操作符只能用在函數(shù)的最后一個參數(shù)上厨内,用在其他地方一樣報語法錯誤。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末产镐,一起剝皮案震驚了整個濱河市隘庄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌癣亚,老刑警劉巖丑掺,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異述雾,居然都是意外死亡街州,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門玻孟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唆缴,“玉大人,你說我怎么就攤上這事黍翎∶婊眨” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵匣掸,是天一觀的道長趟紊。 經(jīng)常有香客問我,道長碰酝,這世上最難降的妖魔是什么霎匈? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮送爸,結(jié)果婚禮上铛嘱,老公的妹妹穿的比我還像新娘。我一直安慰自己袭厂,他們只是感情好墨吓,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纹磺,像睡著了一般帖烘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爽航,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天蚓让,我揣著相機與錄音乾忱,去河邊找鬼。 笑死历极,一個胖子當著我的面吹牛窄瘟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播趟卸,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蹄葱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锄列?” 一聲冷哼從身側(cè)響起图云,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邻邮,沒想到半個月后竣况,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡筒严,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年丹泉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸭蛙。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡摹恨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娶视,到底是詐尸還是另有隱情晒哄,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布肪获,位于F島的核電站寝凌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贪磺。R本人自食惡果不足惜硫兰,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一诅愚、第九天 我趴在偏房一處隱蔽的房頂上張望寒锚。 院中可真熱鬧,春花似錦违孝、人聲如沸刹前。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喇喉。三九已至,卻和暖如春校坑,著一層夾襖步出監(jiān)牢的瞬間拣技,已是汗流浹背千诬。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膏斤,地道東北人徐绑。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像莫辨,于是被迫代替她去往敵國和親傲茄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

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

  • 三沮榜,字符串擴展 3.1 Unicode表示法 ES6 做出了改進盘榨,只要將碼點放入大括號,就能正確解讀該字符蟆融。有了這...
    eastbaby閱讀 1,514評論 0 8
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持草巡,譯者再次奉上一點點福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠型酥,并抽取幸運大...
    HetfieldJoe閱讀 3,027評論 3 37
  • 一捷犹、ES6簡介 ? 歷時將近6年的時間來制定的新 ECMAScript 標準 ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,055評論 8 25
  • 成為不了那樣的人 積極做事 開開心心的笑臉迎人 是個好人 敢說話 我不敢 不敢出門 不敢見人 害怕 害怕被人類看見...
    TheF閱讀 169評論 0 0
  • 之所以堅持說廢話自然是有原因的,我發(fā)現(xiàn)有些事情寫下來了就不用去想了冕末,然后就可以想起其它的事萍歉,有時候并非是閱歷...
    曉欖閱讀 370評論 2 1