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 相关文章推荐
语义化 H1 标签
Jan 14 Javascript
基于jQuery的简单的列表导航菜单
Mar 02 Javascript
原来Jquery.load的方法可以一直load下去
Mar 28 Javascript
Jquery图形报表插件 jqplot简介及参数详解
Oct 10 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 Javascript
Vue表单实例代码
Sep 05 Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
JSON 数据格式详解
Sep 13 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
Mar 12 Javascript
解决vue路由后界面没有变化,但是链接有的问题
Sep 01 Javascript
简单了解JavaScript弹窗实现代码
May 07 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
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
php curl发送请求实例方法
2019/08/01 PHP
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
vue2.x 父组件监听子组件事件并传回信息的方法
2017/07/17 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
对于Python装饰器使用的一些建议
2015/06/03 Python
实时获取Python的print输出流方法
2019/01/07 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Python二维码生成识别实例详解
2019/07/16 Python
Python 3.8 新功能全解
2019/07/25 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
用Python开发app后端有优势吗
2020/06/29 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
医护人员英文求职信范文
2013/11/26 职场文书
行政前台岗位职责
2013/12/04 职场文书
大学自主招生推荐信
2014/05/10 职场文书
励志演讲稿500字
2014/08/21 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
Linux磁盘管理方法介绍
2022/06/01 Servers