es6函数之rest参数用法实例分析


Posted in Javascript onApril 18, 2020

本文实例讲述了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参数代替arguments变量的例子。

// arguments变量的写法
function sortNumbers() {
 return Array.prototype.slice.call(arguments).sort()
}

// rest参数的写法
const sortNumbers = (...numbers) => numbers.sort()

上面代码的两种写法,比较后可以发现,rest参数的写法更自然也更简洁。

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

function push(array, ...items) {
 items.forEach(item => {
 array.push(item)
 })
}

var a = []
push(a, 1, 2, 3)

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

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

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

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

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript获取GridView选择的行内容
Apr 14 Javascript
Javascript 两个窗体之间传值实现代码
Sep 25 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
js判断ie版本号的简单实现代码
Mar 05 Javascript
javascript避免数字计算精度误差的方法详解
Mar 05 Javascript
使用 stylelint检查CSS_StyleLint
Apr 28 Javascript
学JavaScript七大注意事项【必看】
May 04 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
Nov 29 Javascript
基于 flexible 的 Vue 组件:Toast -- 显示框效果
Dec 26 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
Mar 23 jQuery
Vuex中实现数据状态查询与更改
Nov 08 Javascript
jquery实现抽奖功能
Oct 22 jQuery
vue实现短信验证码输入框
Apr 17 #Javascript
JS监听组合按键思路及实现过程
Apr 17 #Javascript
javascript canvas检测小球碰撞
Apr 17 #Javascript
Vue实现浏览器打印功能的代码
Apr 17 #Javascript
基于JavaScript获取url参数2种方法
Apr 17 #Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
Apr 17 #Javascript
vue fetch中的.then()的正确使用方法
Apr 17 #Javascript
You might like
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
php实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
python操作redis的方法
2015/07/07 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
深入理解python中的select模块
2017/04/23 Python
python K近邻算法的kd树实现
2018/09/06 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
《充气雨衣》教学反思
2014/04/07 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
保洁员岗位职责
2015/02/04 职场文书
党员个人总结范文
2015/02/14 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技