ES6 rest参数

REST参数(剩余参数)

MDN:剩余参数语法允许我们将一个不定数量的参数表示为一个数组。
剩余参数必须是函数参数的最后一个参数,它和 arguments对象之间区别如下:

  • 剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
  • arguments对象不是一个真正的数组,而剩余参数是真正的 Array实例,也就是说你能够在它上面直接使用所有的数组方法,比如 sortmapforEachpop
  • arguments对象有一些附加的属性 (如callee属性)。

使用场景

es5实现:
function sortArguments() {
  var args = Array.prototype.slice.call(arguments); //需要先转成数组
  var sortedArgs = args.sort();
  return sortedArgs;
}
console.log(sortArguments(5, 3, 7, 1)); // shows 1, 3, 5, 7

es6实现:
function sortRestArgs(...theArgs) {
  var sortedArgs = theArgs.sort();
  return sortedArgs;
}
 
console.log(sortRestArgs(5,3,7,1)); // shows 1, 3, 5, 7

获取一个不定长度参数的长度

function fun1(...theArgs) {
  alert(theArgs.length);
}
 
fun1();  // 弹出 "0", 因为theArgs没有元素
fun1(5); // 弹出 "1", 因为theArgs只有一个元素
fun1(5, 6, 7); // 弹出 "3", 因为theArgs有三个元素
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。