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