arguments:数组
一、arguments:(类数组)是函数内置接收参数的机制。函数
内置:天生自带的,无论你是否传递了形参,也无论是否写了形参,arguments一直都存在。spa
注: arguments 即能读,又能改,是一个实参的集合。索引
(有数字做为索引,索引从0开始表明第几个传递的参数;还有一个length的属性表明传递了多少个参数;除此以外还有callee属性:arguments.callee表明的是当前函数的自己)作用域
fn1(1,2,3); // 实参——实际传递参数io
function fn1(a,b,c){} // 形参——形式上,abc这些名表明123 function
// 即便不写形参的名,也能够进行传递。都存在了arguments里面call
// arguments => [1,2,3]——实参的集合集合
二、fn1(1,2,3);co
function fn1(){
alert(arguments.length); // 3 虽然不是数组,可是也有length属性
alert(arguments[arguments.length-1]); // 若是想要找到实参集合中的任何一个,能够相似于经过数组下标的位置找到集合中的任意一个
alert(arguments[0]); // 1
};
三、小实例
当函数参数的个数没法肯定的时候:用arguments
alert(sum(1,2,3)); // 相加得6
alert(sum(1,2,3,4)); // 相加得10
function sum(){
var n = 0;
for(var i=0;i<arguments,length;i++){
n += arguments[i];
}
return n;
};
四、arguments 与做用域的关系
var a = 1;
function fn2(a){
arguments[0] = 3;
alert(a); // 3
var a = 2;
alert(arguments[0]); // 2
};
fn2(a);
alert(a); // 1