在原來的語法當中如果你要傳入引數並且全部獲取執行的話,很多情況下我們一般用arguments
,但用arguments
時會出現很多問題:
因此在es6**現了剩餘引數
剩餘引數專門用於收集末尾所有引數,將其放置到乙個形引數組中。
它起乙個收集引數的目的,之後就不需要function
sum(
...args)
return sum;}
console.
log(
sum())
console.
log(
sum(1)
) console.
log(
sum(1,
2)) console.
log(
sum(1,
2,3)
) console.
log(
sum(1,
2,3,
4))
arguments
了。
之後我們就可以利用剩餘引數這個陣列進行操作了。
注意:
由剩餘引數我們引出了乙個問題當我們要把乙個已經生成好的陣列想要吧陣列的每一位當所引數傳入的時候,就會遇到問題。
此時我們建立了乙個陣列將其每一位都生成一位隨機數function
getrandomnumbers
(length)
return arr;
}const numbers =
getrandomnumbers(10
);
push
進去長度為十。
那麼我們如果想將這個陣列的每一位當做引數都傳入時,就需要去迴圈陣列的每一位,這樣的話就會比較麻煩,所以在es6中延伸出乙個新的方法叫展開運算子。
使用方式:...要展開的東西
這種方法跟剩餘引數的寫法是一樣的,但是應用的地方不一樣
再比如說://如果我要去執行乙個函式,傳參時這樣寫
sun(
...numbers)
;//那麼我傳入的就不是乙個引數了而是將陣列內所有引數展開傳入
//而且靈活的是,我還可以在展開運算子後面和前邊繼續傳參是完全沒有問題的
sun(3,
4,...numbers,1,
2);
在es6之後展開運算子非常方便,之後在es7中又對其進行了進一步公升級,不光陣列連物件也能開。//我們宣告乙個陣列
const arr1 =[1
,2,3
,4];
//需求是我們需要將arr1轉殖島arr2
const arr2 =
[...arr1]
;//我們只需要將arr1新建乙個陣列放進去並且展開就行
//是不是非常簡單
但是注意一下:const obj =
//此時我們建立乙個物件
//需求是將obj轉殖到obj2裡我們是只需要這樣
const obj2 =
這種方式是淺轉殖,並沒有進行深層次的轉殖
es6 展開運算子
展開運算子不能用在物件當中,只能在可遍歷物件中使用 iterables iterables的實現是依靠 symbol.iterator 函式,目前只有array,set,string內建 symbol.iterator 方法,不過es7草案中已經加入了物件展開運算子。可用展開運算子展開陣列,解構陣列...
es6 展開運算子
好記性不如爛筆頭,在學習的過程中,越來越明白這句話的含義 es6的展開運算子使用三個點來表示 使用展開運算子的前提 物件具有 iterator 遍歷器介面 比如陣列,怎麼判斷乙個物件是否具有iterator 遍歷器介面呢,我們檢視物件是否有symbol symbol.iterator 屬性就可以了 ...
es6展開運算子
展開運算子 在es6中用.來表示展開運算子,它可以將陣列方法或者物件進行展開。先來看乙個例子它是如何使用的。const arr1 1,2,3 const arr2 arr1,10,20,30 這樣,arr2 就變成了 1,2,3,10,20,30 arr1中的值完全轉殖到了arr2中 arr1改變a...