ES6擴(kuò)展運(yùn)算符和rest運(yùn)算符用法實(shí)例分析
本文實(shí)例講述了ES6擴(kuò)展運(yùn)算符和rest運(yùn)算符用法。分享給大家供大家參考,具體如下:
運(yùn)算符可以很好的為我們解決參數(shù)和對象數(shù)組未知情況下的編程,讓我們的代碼更健壯和簡潔。
運(yùn)算符有兩種:對象擴(kuò)展運(yùn)算符與rest運(yùn)算符。
1.對象擴(kuò)展( spread)運(yùn)算符(...)
(1)解決參數(shù)個(gè)數(shù)問題
以前我們編程是傳遞的參數(shù)一般是確定,否則將會報(bào)錯(cuò)或者異常,如下:
function test(a,b,c,d) { console.log(a) console.log(b) console.log(c) console.log(d) console.log(e)//e is not defined } test(1,2,3,4)
參數(shù)固定,多余的參數(shù)會出錯(cuò)。
但我們又想傳遞多個(gè)參數(shù),但是不確定參數(shù)的個(gè)數(shù),這時(shí)候可以使用對象擴(kuò)展運(yùn)算符來作參數(shù)。
function test1(...arg) { console.log(arg[0]);//1 console.log(arg[1]);//2 console.log(arg[2]);//3 console.log(arg[3])//4 console.log(arg[4])//5 console.log(arg[5])//undefined } test1(1,2,3,4,5)
這時(shí)候程序是不會報(bào)錯(cuò)的,多余取值返回的結(jié)果是undefined。這說明是可以傳入多個(gè)值,并且就算方法中引用多了也不會報(bào)錯(cuò)。
(2)解決數(shù)組賦值問題
我們先用一個(gè)例子說明,我們聲明兩個(gè)數(shù)組arr1和arr2,然后我們把a(bǔ)rr1賦值給arr2,然后我們改變arr2的值,你會發(fā)現(xiàn)arr1的值也改變了,因?yàn)槲覀冞@是對內(nèi)存堆棧的引用,而不是真正的賦值。
let arr1=['i','love','you']; let arr2=arr1; console.log("arr2====",arr2); arr2.push('too'); console.log("arr1====>",arr1);
控制臺輸出的結(jié)果為:
["i", "love", "you"]
["i", "love", "you", "too"]
這是我們不想看到的,可以利用對象擴(kuò)展運(yùn)算符簡單的解決這個(gè)問題,現(xiàn)在我們對代碼進(jìn)行改造。
let arr1=['i','love','you']; let arr2=[...arr1]; console.log(arr2); arr2.push('too'); console.log(arr1);
最終可以看到我們的arr1并沒有改變,簡單的擴(kuò)展運(yùn)算符就解決了這個(gè)問題。
2.rest運(yùn)算符
(1)含義
rest參數(shù)作用: 將多余的逗號分隔的參數(shù)序列轉(zhuǎn)換為數(shù)組參數(shù)
注意: rest參數(shù)必須是最后一個(gè)參數(shù),否則報(bào)錯(cuò)。
rest運(yùn)算符與對象擴(kuò)展運(yùn)算符有很多類似之處,它也用…(三個(gè)點(diǎn))來表示,比如:
function test(first,...arg){ console.log("first==>",first)//0 console.log("arg=====>",arg) } test(0,1,2,3,4,5,6,7);
輸出結(jié)果為:
first==> 0
arg=====>[1, 2, 3, 4, 5, 6, 7]
(2)如何循環(huán)輸出rest運(yùn)算符
用for…of循環(huán)來進(jìn)行打印出arg的值
function test(first,...arg){ for(let val of arg){ console.log(val) } } test(0,1,2,3,4,5,6,7);
結(jié)果為:
1,2,3,4,5,6,7
最后總結(jié):
- 擴(kuò)展運(yùn)算符用三個(gè)點(diǎn)號表示,功能是把數(shù)組或類數(shù)組對象展開成一系列用逗號隔開的值
- rest運(yùn)算符也是三個(gè)點(diǎn)號,不過其功能與擴(kuò)展運(yùn)算符恰好相反,把逗號隔開的值序列組合成一個(gè)數(shù)組
- 當(dāng)三個(gè)點(diǎn)(...)在等號左邊,或者放在形參上。為 rest 運(yùn)算符
- 當(dāng)三個(gè)在等號右邊,或者放在實(shí)參上,是 spread運(yùn)算符
或者說:放在被賦值一方是rest 運(yùn)算符。放在賦值一方式 spread運(yùn)算符。
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
JavaScript常用語句循環(huán),判斷,字符串換數(shù)字
這篇文章主要介紹了JavaScript常用語句主要包括對循環(huán),判斷,字符串換數(shù)字相關(guān)資料的介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下具體內(nèi)容2021-12-12微信小程序中button去除默認(rèn)的邊框?qū)嵗a
這篇文章主要介紹了微信小程序中button去除默認(rèn)的邊框的實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08Express框架詳解app函數(shù)使用實(shí)例
這篇文章主要為大家介紹了Express框架app函數(shù)使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03JavaScript 快捷鍵設(shè)置實(shí)現(xiàn)代碼
屏蔽Alt+F4等快捷鍵 IE Javascript快捷鍵操作2009-03-03javascript的trim,ltrim,rtrim自定義函數(shù)
今天用到j(luò)avascript去掉一個(gè)文本框中字符串兩端的空格,開始還以為有trim,ltrim,rtrim函數(shù)(asp中有這三個(gè)函數(shù),弄混了),結(jié)果找半天,沒有找到。最后找到用正則實(shí)現(xiàn)這樣功能的自定義函數(shù)。2008-09-09ElementUI的Dialog彈窗實(shí)現(xiàn)拖拽移動功能示例代碼
這篇文章主要介紹了ElementUI的Dialog彈窗實(shí)現(xiàn)拖拽移動功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07