arguments对象

arguments

arguments:它是javascript中函数隐含的参数,该对象代表着正在执行的函数和调用它的函数的参数。

[function.]arguments[n]

参数function :选项。当前正在执行的 Function 对象的名字。n :选项。要传递给 function 对象的从0开始的参数值索引。

说明:

Arguments是在函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但并不是数组的对象。它类似数组是因为访问它的方式和数组一样,可以通过

argumets[n]这样的方式来访问对应的每个参数的值,还拥有数组长度属性length,其中n的值是从0开始。最重要的一点:arguments对象存储的是实际传递给函数的参数,而不是函数

声明时所定义的参数列表,而且也不能显示的去创建arguments对象。arguments对象只有在函数开始时才可以用。

下面是arguments对象的用法:

function test(a,b,c){
  var funLen = test.length;              // 这个值表示的是函数声明时的参数个数,这里是3            
  var argLen = arguments.length;         // 这个值是实际传递给函数的参数个数,从下面调用可以看出这里只传递了一个值,故值为1
  alert("funLen=" + funLen + " ,argLen=" +  argLen);   // 结果:fuLen=3 ,argLen=1 
}

test(1);

上面的例子表示arguments对象存储的是实际传递给函数的参数,arguments.length表示的是实际传个函数的参数的个数。上面test.length这种方式也就是通过函数名.length的方式获取到

的值是函数声明时所定义的参数列表的个数。

arguments值的修改:

function test(x,y,a){
  arguments[2] = 10;
  alert("a=" + a);    // 结果是a=10
}

test(1,2,3);

  

function test(x,y,a) {
  a = 10;
  alert("arguments[2]=" + arguments[2]); // 结果是arguments[2]=10  
}

test(1,2,3);

 arguments不是数组(Array类)的代码:

Array.prototype.setValue = 1;
alert(new Array().setValue);   // 1
 
functiion test(){
  alert(arguments.setValue);  // undefined      
}

从上面代码运行的结果可以看出,Array对象扩展了一个setValue的属性,并且值为1,但是当调用test()方法是,会发现结果为undefined,这就说明了setValue不是arguments的属性,

也就是说arguments不是一个数组对象。

原文地址:http://www.cnblogs.com/AganCN/articles/1206270.html

原文地址:https://www.cnblogs.com/b302/p/4255206.html