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

上一篇:机器人到达指定位置方法数


下一篇:ES6学习---rest参数获取实参 / (...args)