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 相关文章推荐
js 函数的执行环境和作用域链的深入解析
Nov 01 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
不同编码的页面表单数据乱码问题解决方法
Feb 15 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
Apr 02 Javascript
jQuery网页选项卡插件rTabs用法实例分析
Aug 26 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
Nov 17 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
Mar 14 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 Javascript
小程序实现搜索框
Jun 19 Javascript
ant design vue datepicker日期选择器中文化操作
Oct 28 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
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
理解JavaScript中的对象 推荐
2011/01/09 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JS控制网页动态生成任意行列数表格的方法
2015/03/09 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
javascript加载xml 并解析各节点的值(实现方法)
2016/10/12 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
python检测lvs real server状态
2014/01/22 Python
简介Django中内置的一些中间件
2015/07/24 Python
Python 处理图片像素点的实例
2019/01/08 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
公积金单位接收函
2014/01/11 职场文书
创业计划书如何编写
2014/02/06 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
法律意见书范文
2015/05/20 职场文书
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers