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 相关文章推荐
再谈javascript图片预加载技术(详细演示)
Mar 12 Javascript
js限制文本框只能输入数字(正则表达式)
Jul 15 Javascript
JS判断表单输入是否为空(示例代码)
Dec 23 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
Jun 23 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
Dec 13 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
Mar 05 Javascript
JS实现自动定时切换的简洁网页选项卡效果
Oct 13 Javascript
原生js实现放大镜效果
Jan 11 Javascript
element-ui表格数据转换的示例代码
Aug 24 Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
解决微信授权成功后点击按返回键出现空白页和报错的问题
Jun 08 Javascript
vue-cli4项目开启eslint保存时自动格式问题
Jul 13 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中图片等比缩放的实例
2013/03/24 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
vue动态生成dom并且自动绑定事件
2017/04/19 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
JS实现轮播图效果
2020/01/11 Javascript
python实现识别相似图片小结
2016/02/22 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
python 解压pkl文件的方法
2018/10/25 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
淘宝中秋节活动方案
2014/01/31 职场文书
批评与自我批评材料
2014/02/15 职场文书
2015年纪委工作总结
2015/05/13 职场文书
金榜题名主持词
2015/07/02 职场文书
爱护公物主题班会
2015/08/17 职场文书
oracle索引总结
2021/09/25 Oracle
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技