物件擴充套件運算子( )與rest運算子

2022-03-25 02:46:47 字數 1558 閱讀 1452

當編寫乙個方法時,我們允許它傳入的引數是不確定的。這時候可以使用物件擴充套件運算子來作引數,看乙個簡單的列子:

function

xzdemo(...arg)

xzdemo(1,2,3);

這時我們看到控制台輸出了 1,2,3,undefined,這說明是可以傳入多個值,並且就算方法中引用多了也不會報錯。

我們先用乙個例子說明,我們宣告兩個陣列arr1和arr2,然後我們把arr1賦值給arr2,然後我們改變arr2的值,你會發現arr1的值也改變了,因為我們這是對記憶體堆疊的引用,而不是真正的賦值。

let arr1=['www','xzblogs','com'];

let arr2=arr1;

console.log(arr2);

arr2.push('new');

console.log(arr1);

控制台輸出:

["www", "xzblogs", "com"]

["www", "xzblogs", "com", "new"]

現在控制台預覽時,你可以看到我們的arr1並沒有改變,簡單的擴充套件運算子就解決了這個問題。

這是我們不想看到的,可以利用物件擴充套件運算子簡單的解決這個問題,現在我們對**進行改造。

let arr1=['

www','

jspang

','com'];

//let arr2=arr1;

let arr2=[...arr1];

console.log(arr2);

arr2.push(

'shenghongyu');

console.log(arr2);

console.log(arr1);

現在控制台預覽時,你可以看到我們的arr1並沒有改變,簡單的擴充套件運算子就解決了這個問題。

如果你已經很好的掌握了物件擴充套件運算子,那麼理解rest運算子並不困難,它們有很多相似之處,甚至很多時候你不用特意去區分。它也用…(三個點)來表示,我們先來看乙個例子。

function

xzdemo(first,...arg)

xzdemo(0,1,2,3,4,5,6,7);

這時候控制台列印出了7,說明我們arg裡有7個陣列元素,這就是rest運算子的最簡單用法。

這裡我們用for…of迴圈來進行列印出arg的值,我們這裡只是簡單使用一下

function

xzdemo(first,...arg)}

xzdemo(0,1,2,3,4,5,6,7); 結果迴圈出1-7 console.log(1) console.log(2) …

for…of的迴圈可以避免我們開拓記憶體空間,增加**執行效率,所以建議大家在以後的工作中使用for…of迴圈。有的小夥伴會說了,反正最後要轉換成es5,沒有什麼差別,但是至少從**量上我們少打了一些單詞,這就是開發效率的提高。

擴充套件運算子和rest運算子

擴充套件運算子用三個點號表示,功能是把陣列或類陣列物件展開成一系列用逗號隔開的值 一 拆分陣列 擴充套件運算子可以直接把陣列拆分成用逗號隔開的值 template section class p 10 el button type danger click get 點選 el button sect...

ECMAScript 擴充套件運算子與rest引數

一 擴充套件運算子與rest引數 運用1.擴充套件運算子 把陣列或者類陣列展開成用逗號隔開的值 擴充套件運演算法 function foo a,b,c let arr 1 2,3 foo arr 陣列合併 let arr1 1 2,3 let arr2 4 5,6 es5的做法 array.prot...

rest 引數與擴充套件運算子

rest 引數與擴充套件運算子 1.rest 引數 es6 引入 rest 引數 形式為.變數名 用於獲取函式的多餘引數,這樣就不需要使用arguments物件了。rest 引數搭配的變數是乙個陣列,該變數將多餘的引數放入陣列中。function add values return sum add ...