Javascript中的arguments对象


Posted in Javascript onJune 20, 2016

在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量。

1、什么是arguments?

这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的[i]和.length。

2、有什么作用?

js语法不支持重载!但可用arguments对象模拟重载效果。

arguments对象:函数对象内,自动创建的专门接收所有参数值得类数组对象。
arguments[i]: 获得传入的下标为i的参数值
arguments.length: 获得传入的参数个数!

重载:

程序中可定义多个相同函数名,不同参数列表的函数,

调用者不必区分每个函数的参数,

执行时,程序根据传入的参数个数,自动判断选择哪个函数执行。

例子如下:

// 1、如果用户传入一个参数,求平方
function sum(a){
console.log(a*a);
}
//如果用户传入两个参数,就求和
function sum(a,b){
console.log(a+b);
}
sum(4); //?
sum(4,5); //?

上述例子中本意是想让同名函数sum()根据参数不同输出不同结果,但是sum是函数名字,本质也是个变量,

第二个会覆盖第一个,所以上述的正确输出答案是:NaN,9.所以这样显然不可以。

如果用arguments,就简单多了。

如下2个例子:

//2、
function calc(){
//如果用户传入一个参数,求平方
if(arguments.length==1){
console.log(arguments[0]*arguments[0]);
}else if(arguments.length==2){
//如果用户传入两个参数,就求和
console.log(arguments[0]+arguments[1]);
}
}
calc(4); //16
calc(4,5); //9 
/*3、无论用户传入几个数字,都可以求和*/
function add(){
//arguments:[]
//遍历arguments中每个元素,并累加
for(var i=0,sum=0;i<arguments.length;sum+=arguments[i++]);
return sum;//返回和
}
console.log(add(1,2,3)); //6
console.log(add(1,2,3,4,5,6)); //21

这就是JS利用arguments重载的效果,简单理解就是一个函数重复利用.

arguments.length是有实参决定,即函数调用时候里面的参数个数决定!

以上所述是小编给大家介绍的Javascript中的arguments对象的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js更优雅的兼容
Aug 12 Javascript
jquery中通过父级查找进行定位示例
Jun 28 Javascript
用JavaScript实现动画效果的方法
Jul 20 Javascript
JavaScript prototype 使用介绍
Aug 29 Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 Javascript
完美实现bootstrap分页查询
Dec 09 Javascript
jQuery siblings()用法实例详解
Apr 26 Javascript
JS中的多态实例详解
Oct 15 Javascript
vue将时间戳转换成自定义时间格式的方法
Mar 02 Javascript
微信小程序实现复选框效果
Dec 28 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
Angular如何由模板生成DOM树的方法
Dec 23 Javascript
JavaScript中获取HTML元素值的三种方法
Jun 20 #Javascript
BootStrap selectpicker
Jun 20 #Javascript
JS采用绝对定位实现回到顶部效果完整实例
Jun 20 #Javascript
基于Turn.js 实现翻书效果实例解析
Jun 20 #Javascript
js 获取经纬度的实现方法
Jun 20 #Javascript
jQuery实现调整表格单列顺序完整实例
Jun 20 #Javascript
JS作为值的函数用法示例
Jun 20 #Javascript
You might like
几个学习PHP的网址
2006/11/25 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
PHP 断点续传实例详解
2017/11/11 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
通过JavaScript控制字体大小的代码
2011/10/04 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
JS 去除Array中的null值示例代码
2013/11/20 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
JS判断移动端访问设备并加载对应CSS样式
2014/06/13 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
使用Python生成随机密码的示例分享
2016/02/18 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
北京大学自荐信范文
2014/01/28 职场文书
教师教学评估方案
2014/05/09 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript