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

function add(...values) {var sum = 0;for (var value of values) {sum += value;}return sum;
}add(2, 5, 3) // 10

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

// arguments变量的写法
function fun1() {return Array.prototype.slice.call(arguments).sort();
}// rest参数的写法
var fun2 = (...nums) => nums.sort();

arguments对象不是数组,而是一个类似数组的对象。所以为了使用数组的方法,必须使用Array.prototype.slice.call先将其转为数组。rest 参数就不存在这个问题,它就是一个真正的数组,数组特有的方法都可以使用。

注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。

// 报错
function f(a, ...b, c) {// ...
}

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

(function(a) {}).length  // 1
(function(...a) {}).length  // 0
(function(a, ...b) {}).length  // 1

ES6——rest参数相关推荐

  1. ES6 rest参数,扩展运算符,Symbol数据类型,迭代器和生成器 【详解加案例 】(二)

    文章目录 1.ES6 rest 参数 2. ES6 扩展运算符 2.1 ES6 简介 2.2 应用 3. ES6 Symbol 数据类型 3.1 Symbol两种创建方式 3.2 Symbol注意事项 ...

  2. ES5和ES6可变参数

    在ES5中,可变参数依靠arguments,代码如下: <!DOCTYPE html> <html> <head> <meta charset="u ...

  3. ES6——函数参数默认值

    ES6 之前,不能直接为函数的参数指定默认值,ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面. function fun(x = 'Hello'){console.log(x); } f ...

  4. ES6函数参数的默认值

    基本用法 在ES6之前,不能直接将函数的参数指定默认值,只能采用变通的方法 function fn(x,y) {y = y || 'World'console.log(x,y) }fn('Hello' ...

  5. ES6 Rest参数

    Rest参数接收函数的多余参数,组成一个数组,放在形参的最后,形式如下: function func(a, b, ...theArgs) { // ... } rest参数只包括那些没有给出名称的参数 ...

  6. ES6函数参数的解构赋值,以及2种设置参数默认值方法的区别

    文章目录 1. 函数参数的解构赋值方式 2. 函数参数解构设置参数默认值 1. 方法1 2. 方法2 3. 总结 1. 函数参数的解构赋值方式 下面代码中,函数add的参数表面上是一个数组,但在传入参 ...

  7. es6 箭头函数 rest参数 扩展运算符

    Es6 箭头函数 语法: 普通函数: fn=function(){} 箭头函数: fn=()=>{} 特性: this是静态的,this始终指向函数声明时所在作用域下的this的值(使用call ...

  8. ES6新特性——rest参数

    ES6引入rest参数,用于获取函数的实参,用来代替arguments; 下面对比一下ES5和ES6获取实参的方式: 1.ES5获取实参的方式: function date() {console.lo ...

  9. 前端知识 | 简析ES6

    CMAScript 6 简介: CMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript ...

最新文章

  1. Nature子刊:微生物系统中的功能与功能冗余
  2. 深度学习的batch_size
  3. 51单片机学习笔记(清翔版)(21)——ADDA数模转换
  4. TortoiseSVN操作
  5. dba的前景_运维、测试、程序员,这些技术岗位哪个更有前景?
  6. c++ boost多线程学习(一)
  7. MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)...
  8. 案例:用户登录(html--servlet--mysql)
  9. 移动开发—Less基础与安装
  10. 无意间把你的个人资料当圣诞礼物,送给了网络犯罪份子吗?
  11. 给定坐标(星期几、第几节)前端显示问题
  12. ZigBee协议栈(一)--协议栈介绍
  13. flutter 修改app名字和图标(安卓)
  14. 2022年防爆电气考试题及答案
  15. 微信公众号笔记(一)
  16. RHCEansible静态主机清单
  17. 期末前端web大作业——HTML+CSS+JavaScript仿京东购物商城网页制作(7页)
  18. 计算机网络学习--协议族、协议栈
  19. java8新特性(拉姆达表达式lambda)
  20. 3-10 Pandas的数据规整

热门文章

  1. jQuery选择器,用逗号分隔的时候需要注意范围问题
  2. 测试培训大纲第一课时,软件测试基础(培训待续中....)
  3. 让shell脚本开机自启动方法
  4. 关于mysql的论文,大家给点建议
  5. 昨天的性能优化与今天的网站故障
  6. python复习题答案_python的复习题和答案合集
  7. 深入浅出计算机组成原理03:处理器
  8. python join_Python中join()方法的用法
  9. python创建和删除文件有什么区别_python创建和删除文件
  10. matlab norm函数_Matlab测夹角