JavaScript擴(kuò)展運(yùn)算符的學(xué)習(xí)及應(yīng)用詳情(ES6)
前言:
擴(kuò)展運(yùn)算符是ES6新增的一種運(yùn)算符,他可以幫助我們簡(jiǎn)化代碼,簡(jiǎn)化操作,所以在開(kāi)發(fā)中是非常常用的,下面我將從學(xué)習(xí)與應(yīng)用兩個(gè)方面來(lái)帶掘友學(xué)習(xí)擴(kuò)展運(yùn)算符。
學(xué)習(xí)
我們先來(lái)學(xué)習(xí)一下擴(kuò)展運(yùn)算符的使用語(yǔ)法
擴(kuò)展運(yùn)算符使用形式為...[1,2,3],...加上數(shù)組
其作用可以理解成與rest相反的操作,rest參數(shù)是在函數(shù)中將參數(shù)轉(zhuǎn)化為數(shù)組形式傳進(jìn)函數(shù)內(nèi),而擴(kuò)展運(yùn)算符是將數(shù)組轉(zhuǎn)換至以逗號(hào)相隔的參數(shù)序列。
let arr = ["a", "b"]; console.log(...arr); // a b
上面我聲明了一個(gè)數(shù)組,通過(guò)擴(kuò)展運(yùn)算符的方式打印,得到一個(gè)參數(shù)序列,了解完語(yǔ)法后來(lái)主要學(xué)習(xí)擴(kuò)展運(yùn)算符的應(yīng)用場(chǎng)景
應(yīng)用
下面我將從函數(shù)應(yīng)用,數(shù)組合并,解構(gòu)賦值,字符串轉(zhuǎn)換與轉(zhuǎn)換數(shù)組五個(gè)方面展開(kāi)擴(kuò)展運(yùn)算符的應(yīng)用場(chǎng)景。
函數(shù)參數(shù)
由擴(kuò)展運(yùn)算符運(yùn)算結(jié)果的特性,可以將其運(yùn)用在函數(shù)傳入?yún)?shù)時(shí)
function add(x, y) {
?return x + y;
}
let arr = [1, 2];
add(...arr); // 3上面我將arr數(shù)組搭配擴(kuò)展運(yùn)算符傳入函數(shù),分別對(duì)應(yīng)參數(shù)x與y
值得注意的是在有擴(kuò)展運(yùn)算符之前,我們是通過(guò)使用apply方法將數(shù)組作為參數(shù)傳入函數(shù)的,它的使用方式如下,拿上面的add函數(shù)舉例:
add.apply(null,arr) // 3
因?yàn)?code>apply可以改變this指向并傳入?yún)?shù),借此特性可以將數(shù)組作為參數(shù)。
數(shù)組合并
在ES5中的數(shù)組合并是通過(guò)concat函數(shù)來(lái)實(shí)現(xiàn)的,又或者使用push來(lái)實(shí)現(xiàn)
let arr_1 = [1, 2, 3]; let arr_2 = [4, 5, 6]; console.log(arr_1.concat(arr_2)); // [ 1, 2, 3, 4, 5, 6 ]
而在ES6中通過(guò)擴(kuò)展運(yùn)算符進(jìn)行直接合并,這樣的做法可以很好得簡(jiǎn)潔代碼,增加代碼的可讀性。
console.log([...arr_1,...arr_2]) // [ 1, 2, 3, 4, 5, 6 ]
解構(gòu)賦值
在一個(gè)數(shù)組中,我們想要拿到第一個(gè)元素外的所有元素,那么在ES5中我們可以這么做:
let arr = [1,2,3,4] let node = arr[0]; let rest = arr.slice(1) console.log(rest) // [ 2, 3, 4 ]
而在ES6中我們可以直接使用解構(gòu)來(lái)分割參數(shù)
let arr = [1,2,3,4] let [a,...b] = arr console.log(a,b) // 1 [ 2 , 3 , 4 ]
字符串轉(zhuǎn)換
可以使用使用解構(gòu)賦值將字符串轉(zhuǎn)換為數(shù)組
console.log([...'豬痞惡霸']) // ['豬', '痞', '惡', '霸']
還可以改造length屬性,因?yàn)槿绻址畠?nèi)包含Unicode字符,那么直接的length會(huì)有問(wèn)題,所以可以使用擴(kuò)展運(yùn)算符轉(zhuǎn)換后拿到正確的length屬性
function length(str) {
? ?return [...str].length
}
console.log(length("\uD83D\uDE80")) // 1
console.log("\uD83D\uDE80".length) // 2如上代碼所示,使用擴(kuò)展運(yùn)算符可以避免Unicode長(zhǎng)度識(shí)別問(wèn)題
轉(zhuǎn)換數(shù)組
我們可以通過(guò)使用擴(kuò)展運(yùn)算符將偽數(shù)組轉(zhuǎn)化為數(shù)組,偽數(shù)組我們可以理解為類(lèi)似數(shù)組的一個(gè)集合,這里簡(jiǎn)單提一下偽數(shù)組。
我們常見(jiàn)的有倆種偽數(shù)組,一個(gè)是arguments還有一個(gè)是DOM的children屬性,獲取回來(lái)的子節(jié)點(diǎn)集合。偽數(shù)組與數(shù)組的區(qū)別就是它們的_proto_區(qū)別,而普通數(shù)組有很多數(shù)組的方法,比如說(shuō)push,shift,map等等,而偽數(shù)組卻無(wú)法使用這些方法。
這就涉及到一個(gè)痛點(diǎn),大家在使用DOM的時(shí)候如果想使用數(shù)組的一些方法,那怎么辦呢?我們就可以先轉(zhuǎn)化為數(shù)組再去使用這些方法,下面舉一個(gè)簡(jiǎn)單的操作dom例子。
const divs = document.querySelectorAll('div')
const divArr = [...divs]
console.log(divArr)到此這篇關(guān)于JavaScript擴(kuò)展運(yùn)算符的學(xué)習(xí)及應(yīng)用詳情(ES6)的文章就介紹到這了,更多相關(guān)JS擴(kuò)展運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js獲取location.href的參數(shù)實(shí)例代碼
本文為大家介紹下js如何獲取location.href的參數(shù),需要注意的是去掉參數(shù)里最開(kāi)頭的?號(hào),具體實(shí)現(xiàn)如下,有需要的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
鼠標(biāo)滑過(guò)出現(xiàn)預(yù)覽的大圖提示效果
這篇文章主要介紹了如何實(shí)現(xiàn)鼠標(biāo)滑過(guò)出現(xiàn)預(yù)覽的大圖提示效果,需要的朋友可以參考下2014-02-02
js中<script> 標(biāo)簽中type值及其含義
在 HTML 中的 script 標(biāo)簽中,type 屬性用于指定腳本的 MIME 類(lèi)型,也即告訴瀏覽器該如何解釋和處理腳本的內(nèi)容,這篇文章主要介紹了js中<script> 標(biāo)簽中type值及其含義,需要的朋友可以參考下2024-12-12
javascript break指定標(biāo)簽打破多層循環(huán)示例
break的語(yǔ)法有兩種break; 和 break label;下面為大家介紹下直接break掉整個(gè)循環(huán)嵌套示例2014-01-01
JavaScript實(shí)現(xiàn)圖片的放大縮小及拖拽功能示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)圖片的放大縮小及拖拽功能,結(jié)合實(shí)例形式分析了javascript鼠標(biāo)事件響應(yīng)及針對(duì)圖形元素的屬性操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05
JS window.opener返回父頁(yè)面的應(yīng)用
網(wǎng)上支付開(kāi)發(fā)分為支付平臺(tái)和客戶端兩部分。當(dāng)客戶端進(jìn)入支付平臺(tái)時(shí),需要在新窗體打開(kāi)支付平臺(tái)頁(yè)面。2009-10-10
echarts學(xué)習(xí)之legend點(diǎn)擊事件解讀
這篇文章主要介紹了echarts學(xué)習(xí)之legend點(diǎn)擊事件解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
非常漂亮的讓背景如此暗淡(一種彈出提示信息時(shí)頁(yè)面背景色調(diào)改變的方法)
非常漂亮的讓背景如此暗淡(一種彈出提示信息時(shí)頁(yè)面背景色調(diào)改變的方法)...2007-04-04

