對(duì)于數(shù)組的處理,開發(fā)者不斷的在創(chuàng)造更好的方式,而在ES2015(ES6) 新增了一種 基本運(yùn)算符——展開運(yùn)算符 使用三個(gè)點(diǎn) ... 表示,它的作用是在調(diào)用函數(shù)、數(shù)組構(gòu)造時(shí) 將數(shù)組表達(dá)式或字符串在語(yǔ)法層面進(jìn)行展開; 構(gòu)建字面量的對(duì)象時(shí)以鍵值對(duì)的形式進(jìn)行展開。
這里小千給大家介紹一下它的基本用法
構(gòu)建字面量語(yǔ)法的數(shù)組
通常情況下構(gòu)建字面量結(jié)構(gòu)的數(shù)組我們會(huì)使用如 push splice unshift concat 等函數(shù)將現(xiàn)有數(shù)組作為新數(shù)組的一部分。
展開運(yùn)算符可以更簡(jiǎn)單快速的完成這項(xiàng)工作。
鏈接數(shù)組
在擁有展開運(yùn)算符以前 我們通常使用 concat 函數(shù) 進(jìn)行數(shù)組的鏈接
數(shù)組拷貝
從以上結(jié)果我們可以看出 展開運(yùn)算符只遍歷展開數(shù)組的第一層(淺拷貝)。 展開的結(jié)果如果是引用類型則不繼續(xù)向下遍歷。 事實(shí)上它的行為和 Object.assign() 是相同的
對(duì)象拷貝和合并
使用展開運(yùn)算符進(jìn)行新對(duì)象構(gòu)造 本質(zhì)上是講原有對(duì)象中的所有 可枚舉 屬性拷貝到新對(duì)象中; 與 Object.assign() 不同的是 Object.assign()會(huì)觸發(fā)setters 展開運(yùn)算符不會(huì)。
rest參數(shù)(剩余參數(shù))
ES2015 引入 rest參數(shù)(語(yǔ)法為 ...變量名),用于獲取函數(shù)的多余參數(shù),這樣就不需要使用arguments對(duì)象了。rest參數(shù)搭配的變量是一個(gè)數(shù)組,該變量將多余的參數(shù)放入數(shù)組中。 這個(gè)特性可以讓我們?cè)谝恍┨囟ōh(huán)境更方便的去處理參數(shù)(例如沒(méi)有arguments的箭頭函數(shù))
我們也可以對(duì)部分參數(shù)使用rest參數(shù),但是在rest參數(shù)后不能有其他參數(shù)(rest必須是最后一個(gè)參數(shù))
注意點(diǎn): 在數(shù)組或函數(shù)參數(shù)中使用展開語(yǔ)法時(shí), 只能用于 可迭代對(duì)象(支持 iterator)
最后想學(xué)習(xí)web前端的同學(xué),可以參考千鋒web前端培訓(xùn)班提供的web前端學(xué)習(xí)路線,該學(xué)習(xí)路線對(duì)從零基礎(chǔ)小白到web前端初級(jí)開發(fā)工程師,web前端高級(jí)開發(fā)工程師,后面的web前端大神級(jí)開發(fā)工程師都有一個(gè)明確清晰的指導(dǎo),根據(jù)千鋒web前端培訓(xùn)機(jī)構(gòu)提供的web前端學(xué)習(xí)路線圖可以讓你對(duì)學(xué)習(xí)web前端開發(fā)需要掌握的知識(shí)有個(gè)清晰的了解,并快速入門web前端開發(fā)。想要獲取前端完整學(xué)習(xí)路線和免費(fèi)的學(xué)習(xí)資料可以添加我們的web前端技術(shù)分享交流qq群:857920838 加群找群管理領(lǐng)取即可,等你來(lái)哦~~