【ES】笔记-ES6的函数rest参数用法

es6中引入了rest参数,样式形如...xxx,用于获取函数的多余参数,这样就不需要使用arguments对象了。rest参数搭配的一个变量是一个数组,该变量将多余的参数放入数组中。例如:

javascript 复制代码
function add(...value){
    console.log(value);
    let sum=0;
    for(var val of value){
        sum+=val    
    }
    return sum
}
add(2,3,5);//10

上面代码的add函数是一个求和函数,利用rest参数,可以向该函数传入任意数目的参数。

下面是一个rest参数代替arguments变量的例子:

javascript 复制代码
function sortNumbers(){
    return Array.prototype.slice.call(arguments).sort();
}
 
//rest写法
const sortNumbers=(...numbers)=>numbers.sort();

上面两种写法rest参数的写法更加自然简洁。

arguments对象不是数组,只是一个类数组对象。为了使用数组的方法,得使用Array.prototype.slice.call先将其转为数组。rest参数就不存在这个问题,它就是一个真正的数组,数组的方法都可以使用。下面是一个利用rest参数改写数组的push方法。

javascript 复制代码
function push(array,...items){
    items.forEach(function(item){    
        array.push(item);
        console.log(item);
    })
}
var a=[];
push(a,1,2,3);

还需要注意的是

rest参数之后不能有其他参数,否则会报错。

函数的length属性不包括rest参数。

javascript 复制代码
(function(a) {}).length  // 1
(function(...a) {}).length  // 0
(function(a, ...b) {}).length  // 1
相关推荐
Li_RuiQi9 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
Li_RuiQi14 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
He BianGu14 小时前
【笔记】C# 中BindingFlags的详细作用
笔记·c#
AI视觉网奇14 小时前
turtle 入门教程笔记
笔记
跨知易知识产权15 小时前
美国专利确权是什么,和专利诉讼有什么不一样?
笔记
杨逢昌工厂6S管理15 小时前
126-杨逢昌6S三环体系:越做越乱的现场熵增机理与基准化治理——一线现场诊断笔记
经验分享·笔记·职场和发展·学习方法
悟道书生15 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
陈哈哈111115 小时前
折腾了半天,总算把 Vim 9.2 装明白了
笔记
陈哈哈111115 小时前
折腾了半天,总算把 OpenGL 的开发环境给装明白了
笔记
深圳老胡16 小时前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节