es6中的擴充套件操作符實際上與rest
引數非常相似。前者是...
,後者則是...+變數名
。
那它們主要的區別我個人認為主要是兩個:
rest
引數使用在函式的引數定義時,擴充套件操作符使用在函式呼叫時。
function
foo(
...items)
console.
log(
...[1,
2,3,
4,5]
);//這裡的...就是擴充套件操作符
擴充套件操作符可以理解為rest
引數的逆操作
為什麼這麼說呢?從它們的作用就可以窺見一二。rest
引數是將所有「多餘」的引數都放進陣列。例如
function
foo(x,
...items)
foo(1,
2,3,
4,5,
6);/*
1[2,3,4,5,6]
*/
可以看出1
之後的「多餘」的2,3,4,5,6
都被放進了乙個陣列並賦值給了items
變數。
而擴充套件操作符則是將陣列轉換成由逗號分隔的引數序列。例如,
let arr =
;let nums =[1
,2,3
,4,5
,6,7
,8,9
];arr.
push
(...nums)
;console.
log(arr)
;//[1,2,3,4,5,6,7,8,9]
若是給arr
陣列的push
方法直接傳入nums
陣列,那麼輸出的結果將會是乙個二維陣列。
在函式呼叫中使用擴充套件操作符將可以實現類似於解構賦值的效果。注意,僅僅只是類似。例如,
function
pow(x, y)
let nums =[2
,3];
console.
log(
pow(
...nums));
//8
這個例子中nums
中的2
和3
都分別賦值給了x
和y
。 ES6 擴充套件操作符騷操作
複製和合併陣列變得更為簡潔。不需要使用 concat 方法或 slice 方法,乙個 操作符已經足夠 const arr1 10 20,30 const copy arr1 console.log copy 10,20,30 const arr2 40 50 const merge arr1,arr...
es6新特性展開操作符「 」
展開操作符 允許乙個表示式在某處展開,在存在多個引數 用於函式呼叫 多個元素 用於陣列字面量 或者多個變數 用於解構賦值 的地方就會出現這種情況。如果在之前的js中想讓乙個函式把乙個陣列一次作為引數進行呼叫時 function test x,y,z var args 1,2,3 使用 時 var a...
ES6特性之 Spread操作符
spread操作符 也稱作展開操作符,作用是將可迭代的 iterable 物件進行展開。比如有2個陣列,我們要將其中乙個陣列中所有元素插入到另乙個陣列中,通過spread操作符,就可以這樣進行 var shoppinglist t shirt fruits,egg 我們看到,通過在shoppingl...