【学习笔记】【JavaScript】剩余参数

剩余参数:…theArgs

剩余参数的描述
如果函数的最后一个命名参数以…为前缀,则它将成为一个由剩余参数组成的真数组,其中从0(包括)到theArgs.length(排除)的元素由传递给函数的实际参数提供。1

语法:

function(a, b, ...theArgs) {
	  //statements
}
  1. 直接这样写也行
function(...theArgs) {
	  //statements
}
//或者
function(...[a,b]){
	//statements
}
//但这样写必须传入2个实参,否则看本文后面

statements是组成函数的声明语句,也就是函数内部的代码块

特点

…theArgs和arguments对象是有区别的

参数分为实参和形参

区别1:

剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。就像上面的语法1那样,参数的a,b都是形参,传入参数之后有具体的映射。而…theArgs,则是除a和b之外其余传入的那些没有形参的参数,所以…theArgs也是一个数组Array。

区别2:

继上一点,arguments对象虽然包含了所有传入函数的实参,但它并不是一个真正的Array,但可以通过转换变成一个Array来使用,后面具体说。但…theArgs是真正的Array,可以使用所有的Array方法。

区别3:

arguments对象具有一些如callee之类的附加属性,而…theArgs没有。

使用

…theArgs可以被解构,通过解构赋值分包到不同的变量中,使用起来很灵活,当然我个人认为,直接当数组来检索使用也行。

就像这样:
function name(...[a, b, c]) {
  return a + b + c;
}
name(1,2,3);//6
/*
如果传入实参少于3个(a,b,c)
返回NaN,提示b和c are define;
如果传入参数大于3个,返回6,
提示the fourth parameter is not destructured
*/
arguments对象转换成数组

示例

function f(a,b,c,d) {
  var normalArray = Array.prototype.slice.call(arguments);
  // -- or --
  var normalArray = [].slice.call(arguments);
  // -- or --
  var normalArray = Array.from(arguments);
}
//用其中一种就可以了

学习总结

个人认为剩余参数在一些情况下提供了一个很方便的途径(有时参数很多或者抽象函数的时候),可以更灵活的调用参数,对于需要确切映射的参数,也可以通过转换arguments对象,有更灵活的方法来调用。

注:这段总结仅限目前的理解,以后有更深入理解的时候再更新一下吧,欢迎大佬的指正。

文章引用:


  1. 剩余参数 ↩︎

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值