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 在线压缩和格式化收藏
Jan 16 Javascript
javascript实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
JQuery select控件的相关操作实现代码
Sep 14 Javascript
AngularJS Module方法详解
Dec 08 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
Nov 23 Javascript
JavaScript判断浏览器及其版本信息
Jan 20 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 Javascript
vue.js事件处理器是什么
Mar 20 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
VUE2.0中Jsonp的使用方法
May 22 Javascript
详解Require.js与Sea.js的区别
Aug 05 Javascript
VuePress 静态网站生成方法步骤
Feb 14 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 var_dump()函数的详解
2013/06/05 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
jQuery实现tab栏切换效果
2020/12/22 jQuery
[16:21]教你分分钟做大人:圣堂刺客
2014/12/03 DOTA
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
wxpython绘制音频效果
2019/11/18 Python
Python类的动态绑定实现原理
2020/03/21 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
Python读写Excel表格的方法
2021/03/02 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
租车协议书范本
2014/04/22 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
珍爱生命主题班会
2015/08/13 职场文书
2016年母亲节寄语
2015/12/04 职场文书
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android