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实现画板的代码
Sep 05 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
Nov 17 Javascript
JS图像无缝滚动脚本非常好用
Feb 10 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
Mar 12 Javascript
使用JavaScript制作一个简单的计数器的方法
Jul 07 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
Jul 22 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
Dec 06 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
Dec 25 jQuery
javascript中undefined的本质解析
Jul 31 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
Sep 23 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
Sep 27 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新手用的Insert和Update语句构造类
2012/03/31 PHP
php判断当前用户已在别处登录的方法
2015/01/06 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
jquery 设置style:display的方法
2015/01/29 Javascript
浅析JavaScript动画
2015/06/10 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
python 读取文件并替换字段的实例
2018/07/12 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
python异步存储数据详解
2019/03/19 Python
浅谈Python type的使用
2019/11/19 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
python中xlrd模块的使用详解
2021/02/01 Python
测绘工程个人的自我评价
2013/11/10 职场文书
认识深刻的检讨书
2014/02/16 职场文书
党的生日演讲稿
2014/09/10 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
2019入党申请书格式
2019/06/25 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记
Django框架中视图的用法
2022/06/10 Python