擴展運算符和rest運算符,它們都是...(三個點)
,它們能夠很好的爲咱們解決參數和對象數組未知狀況下的編程,讓咱們的代碼更健壯和簡潔。javascript
擴展運算符
function fun(...args){ console.log(args[0]); console.log(args[1]); console.log(args[2]); console.log(args[3]); } fun(1,2,3); // 1 // 2 // 3 // undefined
擴展運算符的一個用處java
let arr1=['www','jspang','com']; let arr2=arr1; // 因爲數組對象其實是一個引用類型,所以arr2 與 arr1指向了同一處 console.log(arr2); arr2.push('shengHongYu'); //修改了 arr2 那麼 arr1也會被修改 console.log(arr1); // 爲了解決這個問題 let arr1 = ['11', '222', '2222']; let arr2 = [...arr1]; console.log(arr2); arr2.push('shengHongYu'); console.log(arr2); console.log(arr1);
const [o1, ...ops] = ['one', 'two', 'three']; // o1 one // ops ['two', 'three']
const ops = ['one', 'two', 'three']; const a = ['222',...ops]; console.log(a); // ["222", "one", "two", "three"]
reset運算符
若是你已經很好的掌握了對象擴展運算符,那麼理解rest運算符並不困難,它們有不少類似之處,甚至不少時候你不用特地去區分。編程
function fun(first, ...arg) { console.log(arg.length); // 7 } fun(0, 1, 2, 3, 4, 5, 6, 7);
輸出arg內容數組
function jspang(first,...arg){ for(let val of arg){ console.log(val); } } jspang(0,1,2,3,4,5,6,7);