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 相关文章推荐
jQuery EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
Aug 21 Javascript
javascript中的throttle和debounce浅析
Jun 06 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
js实现网页抽奖实例
Aug 05 Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 Javascript
Vue.js系列之项目搭建(1)
Jan 03 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
May 03 Javascript
微信小程序 检查接口状态实例详解
Jun 23 Javascript
vuejs 单文件组件.vue 文件的使用
Jul 28 Javascript
vue-router启用history模式下的开发及非根目录部署方法
Dec 23 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脚本的测试方法
2015/08/05 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
PHP开发中常用的十个代码样例
2016/02/02 PHP
PHP 中常量的知识整理
2017/04/14 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
Js基础学习资料
2010/11/23 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python类super()及私有属性原理解析
2020/06/15 Python
python中str内置函数用法总结
2020/12/27 Python
Java里面有没有全局变量?为什么?
2015/02/06 面试题
电子商务应届生求职信
2013/11/16 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书