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 相关文章推荐
jQuery validate 中文API 附validate.js中文api手册
Jul 31 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
Dec 16 Javascript
js生成随机数(指定范围)的实例代码
Jul 10 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
Nov 16 Javascript
Angular中$broadcast和$emit的使用方法详解
May 22 Javascript
基于Vue实现页面切换左右滑动效果
Jun 29 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
Mar 01 Javascript
vue使用iframe嵌入网页的示例代码
Jun 09 Javascript
在react中使用vuex的示例代码
Jul 30 Javascript
layer 刷新某个页面的实现方法
Sep 05 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 Javascript
vue如何清除浏览器历史栈
May 25 Vue.js
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实现获取域名的方法小结
2014/11/05 PHP
php创建session的方法实例详解
2015/01/27 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
javascript实现简易计算器
2017/02/01 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
js中call()和apply()改变指针问题的讲解
2019/01/17 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
Python中with及contextlib的用法详解
2017/06/08 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
美国温暖商店:The Warming Store
2018/12/15 全球购物
艺术设计专业个人求职信
2013/09/21 职场文书
体育馆的标语
2014/06/24 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
收入证明申请书
2015/06/12 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle
Java 写一个简单的图书管理系统
2022/04/26 Java/Android