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的东西基本都会用到。

目录
相关文章
|
3月前
|
JavaScript 前端开发 索引
原生JavaScript之函数特殊对象arguments
原生JavaScript之函数特殊对象arguments
31 0
|
8月前
|
存储 JavaScript
JS arguments对象
众所周知,js是一门相当灵活的语言。当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的东西里面
|
4月前
|
存储 前端开发 JavaScript
javascript内置对象之arguments
javascript内置对象之arguments
21 0
|
8月前
|
存储 JavaScript 前端开发
📕 重学JavaScript:怎么处理arguments这种伪数组?
平时我们写代码的时候,有没有想到过这样的问题:类似于func01(num, name){} 中的 num, name 到底是什么类型的呢?我们该怎么处理它呢?
48 0
|
9月前
|
存储 JavaScript 前端开发
📕 重学JavaScript:函数的入参(arguments)是什么类型?我能怎么使用它?
arguments是一个特殊的对象👏,它可以存储我们给函数传递的所有参数。只不过它的属性从0开始排,依次为0,1,2…最后还有callee和length属性。我们也把这样的对象称为类数组。
58 0
|
10月前
|
JavaScript 算法
js中函数内部属性arguments和this以及方法apply()和call()
js中函数内部属性arguments和this以及方法apply()和call()
|
11月前
|
JavaScript 前端开发
JavaScript中的隐含参数arguments
JavaScript中的隐含参数arguments
48 0
|
JavaScript 前端开发 索引
JavaScript中的Arguments对象
JavaScript中的Arguments对象
73 0
JavaScript中的Arguments对象
|
JavaScript 前端开发 索引
JS查漏补缺——arguments
JS查漏补缺系列是我在学习JS高级语法时做的笔记,通过实践费曼学习法进一步加深自己对其的理解,也希望别人能通过我的笔记能学习到相关的知识点。这一次我们来了解一下这个现在不推荐使用但在代码中还是会看到的arguments,免得见到的时候摸不着头脑
144 0
|
JavaScript 前端开发
JavaScript中的隐含参数arguments
调用函数时,浏览器每次都会传递进两个隐含的参数: 函数的上下文对象this(关于this指向) 装实参的对象arguments
JavaScript中的隐含参数arguments