JavaScript的arguments对象应用示例


Posted in Javascript onSeptember 15, 2014

arguments 对象

在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。

因此,无需明确命名参数,就可以重写函数:

function sayHi() {
if (arguments[0] == "bye") {
return;
}

alert(arguments[0]);
}

检测参数个数

还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。

下面的代码将输出每次调用函数使用的参数个数:

function howManyArgs() {
alert(arguments.length);
}

howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

上面这段代码将依次显示 "2"、"0" 和 "1"。

注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。
模拟函数重载

用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:

function doAdd() {
if(arguments.length == 1) {
alert(arguments[0] + 5);
} else if(arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
}

doAdd(10); //输出 "15"
doAdd(40, 20); //输出 "60"

当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。

虽然不如重载那么好,不过已足以避开 ECMAScript 的这种限制。

Javascript 相关文章推荐
根据分辨率不同,调用不同的css文件
Jul 07 Javascript
JS去掉第一个字符和最后一个字符的实现代码
Feb 20 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
Feb 28 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
May 22 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
浅谈Vue.js中的v-on(事件处理)
Sep 05 Javascript
vue-router 权限控制的示例代码
Sep 21 Javascript
解决Mac node版本升级失败的问题
May 16 Javascript
JS实现倒计时图文效果
Nov 17 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
基于JS实现父组件的请求服务过程解析
Oct 14 Javascript
React组件设计模式之组合组件应用实例分析
Apr 29 Javascript
avascript中的自执行匿名函数应用示例
Sep 15 #Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 #Javascript
css与javascript跨浏览器兼容性总结
Sep 15 #Javascript
一个通过script自定义属性传递配置参数的方法
Sep 15 #Javascript
一个字符串反转函数可实现字符串倒序
Sep 15 #Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 #Javascript
javascript使用数组的push方法完成快速排序
Sep 15 #Javascript
You might like
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
关于PHP文件的自动运行方法分析
2016/05/13 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
js性能优化技巧
2015/11/29 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
Python API len函数操作过程解析
2020/03/05 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
业务主管岗位职责范本
2013/12/25 职场文书
促销活动策划方案
2014/01/12 职场文书
项目施工员岗位职责
2014/03/09 职场文书
出纳会计岗位职责
2014/03/12 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
监察建议书格式
2014/05/19 职场文书
建筑管理专业求职信
2014/07/28 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
民主评议党员个人总结
2015/02/13 职场文书