1. 程式人生 > 其它 >rest引數和擴充套件運算子的區別

rest引數和擴充套件運算子的區別

一.rest引數

rest引數中的變數代表一個數組,所以陣列特有的方法都可以用於這個變數

function push(array, ...items) {
items.forEach(function(item) {
array.push(item);
console.log(item);
});
}

二.擴充套件運算子

好比rest引數的逆運算,將一個數組轉為用逗號分隔的引數序列。

函式呼叫

function add(x, y) {
return x + y;
}
var numbers = [4, 38];
add(...numbers) // 42

應用場景:

1.合併陣列

arr = [...arr1,...arr2]

2.與解析結構結合使用

onst [first, ...rest] = [1, 2, 3, 4, 5];
first // 1
rest // [2, 3, 4, 5]

3.函式的返回值

4.字串轉陣列

[...'hello']
// [ "h", "e", "l", "l", "o" ]

5.實現了Iterator介面的物件

var nodeList = document.querySelectorAll('div');

var array = [...nodeList];

6.Map和Set結構,Generator函式

let map = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);
let arr = […map.keys()]; // [1, 2, 3]
var go = function*(){
yield 1;
yield 2;
yield 3;
};
[…go()] // [1, 2, 3]

7.使用Math簡化陣列取最大值

console.log(Math.max.apply(null, [14, 7])); //14

console.log(Math.max(...[14, 7])); //14