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 相关文章推荐
innerText和innerHTML 一些问题分析
May 18 Javascript
浅析LigerUi开发中谨慎载入common.css文件
Jul 09 Javascript
js螺旋动画效果的具体实例
Nov 15 Javascript
jquery实现选中单选按钮下拉伸缩效果
Aug 06 Javascript
jQuery实现可展开折叠的导航效果示例
Sep 12 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 Javascript
详谈innerHTML innerText的使用和区别
Aug 18 Javascript
深入浅析vue组件间事件传递
Dec 29 Javascript
vue cli webpack中使用sass的方法
Feb 24 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
ES10的13个新特性示例(小结)
Sep 23 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 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安装全攻略:APACHE
2006/10/09 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
js分页代码分享
2014/04/28 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
js实现上传并压缩图片效果
2018/01/10 Javascript
Vue.js中 v-model 指令的修饰符详解
2018/12/03 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
详解python编译器和解释器的区别
2019/06/24 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
Django REST framwork的权限验证实例
2020/04/02 Python
总经理助理的八要求
2013/11/12 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
优秀班主任申报材料
2014/12/16 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
Java数组详细介绍及相关工具类
2022/04/14 Java/Android