本文实例讲述了es6函数之rest参数用法。分享给大家供大家参考,具体如下: es6引入rest参数(形式为 …变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了,rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。 function add (...values) { let sum = 0; for (var val of values) { sum += val } return sum } add(2, 3, 5) // 10 上面代码的add函数是一个求和函数,利用rest参数,可以向该函数传入任意数目的参数。 下面是一个rest参数 在ES6(ECMAScript 2015)中,`rest`参数是一个非常重要的特性,它使得处理函数参数变得更加灵活和简洁。`rest`参数的语法格式为 `...变量名`,它允许我们将不定数量的参数作为一个数组来捕获。这种特性避免了之前广泛使用的 `arguments` 对象,`arguments` 虽然也能获取所有函数参数,但它不是一个真正的数组,而是一个类数组对象。 例如,在以下的 `add` 函数中,`...values` 是一个 `rest` 参数,它将所有传入的额外参数收集到一个名为 `values` 的数组中: ```javascript function add(...values) { let sum = 0; for (var val of values) { sum += val; } return sum; } add(2, 3, 5); // 返回 10 ``` 在这个例子中,`add` 函数可以接收任意数量的参数,然后通过遍历 `values` 数组求它们的和。`rest` 参数使得函数更加通用,不再局限于固定数量的参数。 使用 `rest` 参数可以替代 `arguments` 变量,例如在排序数字的函数中: ```javascript // 使用 arguments function sortNumbers() { return Array.prototype.slice.call(arguments).sort(); } // 使用 rest 参数 const sortNumbers = (...numbers) => numbers.sort(); ``` `sortNumbers` 函数使用 `rest` 参数 `...numbers` 时,我们无需再像使用 `arguments` 那样进行类型转换,因为 `numbers` 直接就是一个数组,可以直接调用 `sort` 方法。 此外,`rest` 参数也可以方便地模拟其他数组方法,如 `push`: ```javascript function push(array, ...items) { items.forEach(item => { array.push(item); }); } var a = []; push(a, 1, 2, 3); ``` 这个 `push` 函数接受一个数组 `array` 和任意数量的元素 `items`,并将这些元素添加到 `array` 中。由于 `items` 是一个数组,我们可以直接使用 `forEach` 进行迭代。 需要注意的是,`rest` 参数必须是函数中最后一个参数,否则会导致语法错误。例如: ```javascript function f(a, ...b, c) { // 报错 // ... } ``` 函数的 `length` 属性不包含 `rest` 参数,因此以下函数的 `length` 分别为: ```javascript (function (a) {}).length; // 1 (function (...a) {}).length; // 0 (function (a, ...b) {}).length; // 1 ``` 理解并熟练使用 `rest` 参数能够提升代码的可读性和可维护性,同时减少对 `arguments` 对象的依赖。在编写函数时,如果需要处理不定数量的参数,`rest` 参数是一个非常实用的工具。在JavaScript编程中,了解和掌握这一特性对于编写高效且易于理解的代码至关重要。
























- 粉丝: 6
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 区块链技术在会计领域应用展望.docx
- 收集关于嵌入式领域的机器学习算法实现的进展、相关论文和文章、开发库等,帮助初学者快速了解、学习和入门嵌入式领域的机器学习 CC-BY-NC-SA 4.0
- Linux网络安全问题及其对策.doc
- MSP单片机多路数据采集系统设计方案.doc
- 吃豆子程序通信工程.doc
- 计算机科学精神与青年大学生素质教育研究.docx
- 单片机的SPWM控制系统研究与设计开发.doc
- 收费停车场管理系统数据库设计.doc
- 个税计算器(智能计算)(Excel表格通用模板).xlsx
- 信息系统安全管理流程.doc
- XX靓衣网站策划专业技术方案.doc
- 微服务下的apm全链路监控方案.pdf
- PLC控制变频器恒压供水系统设计方案解析.doc
- 基于80c52单片机的数字电加热恒温控制系统设计.doc
- 资产负债表中每个项目管理具体填制方法如下.doc
- 用C语言实现一个简单的学生成绩管理系统.doc



评论0