开发者社区> webmirror> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

js中的arguments

简介: arguments是JavaScript里的一个内置对象,是指向实参对象的引用,它很古怪,也经常被人所忽视,但实际上是很重要的。所有主要的js函数库都利用了arguments对象,所以agruments对象对于javascript程序员来说是必需熟悉的。
+关注继续查看

arguments是JavaScript里的一个内置对象,是指向实参对象的引用,它很古怪,也经常被人所忽视,但实际上是很重要的。所有主要的js函数库都利用了arguments对象,所以agruments对象对于javascript程序员来说是必需熟悉的。

JS本身并没有重载函数的功能,但Arguments对象能够模拟重载,JS中每个函数都会有一个Arguments对象实例arguments,arguments是收到的实参副本,在词法分析中, 首先按形参形成AO的属性,值为undefined,当实参传来时, 再修改AO的相应属性,可以用数组下标的方式"[]"引用arguments的元素,arguments.length为函数实参个数,arguments.callee引用函数自身;arguments不是一个数组,如果用typeof arguments,返回的是’object’。虽然我们可以用调用数据的方法来调用arguments。比如length,还有index方法。但是数组的push和pop对象是不适用的。

arguments的特性和使用方法
1.特性:arguments对象和Function是分不开的,因为arguments这个对象不能显式创建,arguments对象只有函数开始时才可用。
2.使用方法:虽然函数的arguments对象并不是一个数组,但其访问单个参数的方式与访问数组元素的方式相同,索引n实际上是arguments对象的0…n 属性的其中一个参数;虽然arguments对象并不是一个数组,但是访问单个参数的方式与访问数组元素的方式相同;例如:arguments[0],arguments[1],。。。。。。。。arguments[n];在js中不需要明确指出参数名就能访问它们,例如:

function test(){
var s;
for(int i=0;i

{s+=arguments[i]+",";}

return s;
}
test("name","age")
输出结果:
name,age

我们知道每一个对象都有自己的属性,arguments对象也不例外,首先arguments的访问犹如Array对象一样,用0到arguments.length-1来枚举每一个元素;下面我们来看看callee属性,返回正被执行的Function对象,也就是所指定的Function对象的正文;callee属性是arguments对象的一个成员,仅当相关函数正在执行时才可用。callee属性的初始值就是正被执行的Function对象,这允许匿名的递归函数。

var sum=function(n){
if(1==n) {
   return 1;
} else {
  return n + arguments.callee(n-1);

  }
}
alert(sum(6));

通俗讲就是,arguments对象大多用来针对同个方法多处调用并且传递参数个数不一样时进行使用。根据arguments的索引来判断执行的方法。

arguments的用法和特性基本就是这么多了;可能callee属性用到的比较少,但是如果自己封装或者写一些js的时候,除了callee的东西基本都会用到。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JavaScript中的Arguments对象
JavaScript中的Arguments对象
0 0
JS查漏补缺——arguments
JS查漏补缺系列是我在学习JS高级语法时做的笔记,通过实践费曼学习法进一步加深自己对其的理解,也希望别人能通过我的笔记能学习到相关的知识点。这一次我们来了解一下这个现在不推荐使用但在代码中还是会看到的arguments,免得见到的时候摸不着头脑
0 0
JavaScript中的隐含参数arguments
调用函数时,浏览器每次都会传递进两个隐含的参数: 函数的上下文对象this(关于this指向) 装实参的对象arguments
0 0
初识JavaScript函数Arguments模拟重载
初识JavaScript函数Arguments模拟重载
0 0
JavaScript 深入之类数组对象与 arguments
JavaScript深入系列第十三篇,讲解类数组对象与对象之间的相似与差异以及arguments的注意要点
0 0
如何利用JavaScript的arguments对象实现用代码打印调用栈的需求
如何利用JavaScript的arguments对象实现用代码打印调用栈的需求
0 0
如何利用JavaScript的arguments对象实现用代码打印调用栈的需求
如何利用JavaScript的arguments对象实现用代码打印调用栈的需求
0 0
JS中的arguments参数
JavaScript 开发中,函数方法一般都会通过指定具体的参数名来接收参数,但是,当参数不固定时,可通过arguments来操作函数接收到的参数。此外,并不是只有此方法可以接收任意参数,现代有很多处理方案,此处只提供一种。
0 0
js中arguments详解
在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量。   什么是arguments? 这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的[i]和.length。
1360 0
+关注
webmirror
Good good study, day day up
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Javascript中的函数
立即下载
Javascript异步编程
立即下载
JS零基础入门教程(上册)
立即下载