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 相关文章推荐
use jscript List Installed Software
Jun 11 Javascript
用jQuery技术实现Tab页界面之二
Sep 21 Javascript
关于JavaScript定义类和对象的几种方式
Nov 09 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
Mar 08 Javascript
JavaScript中pop()方法的使用教程
Jun 09 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
jQuery实现可展开折叠的导航效果示例
Sep 12 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
bootstrapValidator.min.js表单验证插件
Feb 09 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
Feb 28 Javascript
js中let能否完全替代IIFE
Jun 15 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
Python正则表达式知识汇总
2017/09/22 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
Python subprocess库的使用详解
2018/10/26 Python
python实现吃苹果小游戏
2020/03/21 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
出纳员的岗位职责
2014/02/22 职场文书
毕业生应聘求职信
2014/07/10 职场文书
工作表现证明
2015/06/15 职场文书
python 实现图片特效处理
2022/04/03 Python
如何通过cmd 连接阿里云服务器
2022/04/18 Servers