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 相关文章推荐
在浏览器窗口上添加遮罩层的方法
Nov 12 Javascript
javascript实现复制与粘贴操作实例
Oct 16 Javascript
使用变量动态设置js的属性名
Oct 19 Javascript
jQuery 3.0十大新特性
Jul 06 Javascript
React Native实现简单的登录功能(推荐)
Sep 19 Javascript
JavaScript字符串_动力节点Java学院整理
Jun 27 Javascript
在Vue中使用axios请求拦截的实现方法
Oct 25 Javascript
Vue实现一个图片懒加载插件
Mar 11 Javascript
vue中v-text / v-html使用实例代码详解
Apr 02 Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 Javascript
vue使用原生swiper代码实例
Feb 05 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 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 DB 数据库连接类定义与用法示例
2019/03/11 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
JavaScript知识点整理
2015/12/09 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
如何安装ruby on rails
2014/02/09 面试题
2014年道德讲堂实施方案
2014/03/05 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
中小学生学籍证明
2014/10/25 职场文书
四风专项整治工作情况汇报
2014/10/28 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
2014年民政工作总结
2014/11/26 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
详解PHP Swoole与TCP三次握手
2021/05/27 PHP
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
深入理解go缓存库freecache的使用
2022/02/15 Golang
Oracle锁表解决方法的详细记录
2022/06/05 Oracle