當編寫乙個方法時,我們允許它傳入的引數是不確定的。這時候可以使用物件擴充套件運算子來作引數,看乙個簡單的列子:12
3456
78functionjspang(...arg)
jspang(1,2,3);
這時我們看到控制台輸出了 1,2,3,undefined,這說明是可以傳入多個值,並且就算方法中引用多了也不會報錯。
擴充套件運算子的用處:
我們先用乙個例子說明,我們宣告兩個陣列arr1和arr2,然後我們把arr1賦值給arr2,然後我們改變arr2的值,你會發現arr1的值也改變了,因為我們這是對記憶體堆疊的引用,而不是真正的賦值。12
345let arr1=['www','jspang','com'];
let arr2=arr1;
console.log(arr2);
arr2.push('shenghongyu');
console.log(arr1);
控制台輸出:12
["www","jspang","com"]
["www","jspang","com","shenghongyu"]
這是我們不想看到的,可以利用物件擴充套件運算子簡單的解決這個問題,現在我們對**進行改造。12
3456
7let 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 arg xzdemo 1,2,3 這時我們看到控制台輸出了 1,2,3,undefined,這說明是可以傳入多個值,並且就算方法中引用多了也不會報錯。我們先用...
物件的擴充套件運算子
陣列的擴充套件 一章中,已經介紹過擴充套件運算子 const a,b 1,2,3 a 1 b 2,3 es2018 將這個運算子 引入了物件。解構賦值 物件的解構賦值用於從乙個物件取值,相當於將目標物件自身的所有可遍歷的 enumberable 但是尚未讀取的屬性,分配到指定的物件上面。let x ...
擴充套件運算子
三個點,主要是用來將陣列幻化為用逗號分隔的引數序列。合併陣列 與解構賦值結合 如果將擴充套件運算子用於陣列賦值,只能放在引數的最後一位,否則會報錯。將字串轉為真正的陣列 可以將類似陣列的物件轉為真正的陣列 map和set結構,generator函式 擴充套件運算子內部呼叫的是資料解構的iterato...