水牛的es6日记第三天【不定参数的用法】

JavaScript Demo: Functions Rest Parameters

我们在后面把不定参数叫做 rest参数

为了帮助我们创建更灵活的功能,ES6引入了rest参数作为功能参数。使用rest参数,您可以创建带有可变数量参数的函数。这些参数存储在一个数组中,以后可以从函数内部进行访问。 查看以下代码:

function howMany(...args) {
  return "You have passed " + args.length + " arguments.";
}
console.log(howMany(0, 1, 2)); // You have passed 3 arguments.
console.log(howMany("string", null, [1, 2, 3], { }));

rest参数消除了检查args数组的需要,并允许我们在参数数组上应用map(),filter()和reduce()。

来个小测

使用rest参数修改函数求和,使函数求和能够接受任意数量的参数并返回其和

const sum = (x, y, z) => {
  const args = [x, y, z];
  return args.reduce((a, b) => a + b, 0);
}

改写后

const sum = (...args) => {

  return args.reduce((a, b) => a + b, 0);
}

补充:map(),filter(),reduce的用法

注:下面图文来自杨二小博客

Map、Filter和Reduce常常被用于对一个数组做一些操作,进而转换成某个新的东西(数据类型不一定还是数组哦~)。下面是我对这三个API的直观认识:
Map

你想将一个数组中的每一项做个转换,结果生成了一个新数组,并且新数组的长度和原数组一致。

**在这里插入图片描述
Filter

在这里插入图片描述

你想将一个数组做一个过滤,按照某规则提取出一些特定的项来。结果也生成了一个新数组,但新数组的长度小于或等于原数组。

Reduce
在这里插入图片描述

你想通过遍历一个数组的每一项来计算出一个新东西,最后生成的结果可以是任何类型的变量:一个新数组,一个新对象,一个新布尔值…

在这里插入图片描述

es5其实已经有过类似用法 叫argument

argument

argument拿出来讲是因为,rest参数是es6的内容,argument是之前的,可以作为补充了解。
argument 文档中解释它为“类数组”,像数组但却没其内置方法 诸如 foreach(),map()

function func1(a, b, c) {
  console.log(arguments[0]);
  // expected output: 1

  console.log(arguments[1]);
  // expected output: 2

  console.log(arguments[2]);
  // expected output: 3
}

func1(1, 2, 3);

发布了60 篇原创文章 · 获赞 18 · 访问量 5218

猜你喜欢

转载自blog.csdn.net/szuwaterbrother/article/details/105613295