您的位置:首页 > Web前端 > JavaScript

JavaScript的arguments对象

2015-10-22 00:37 531 查看

arguments对象JavaScript当前函数的一个内置属性

每个函数中都自带一个arguments属性,可以在函数中调用。

arguments非常类似Array,但实际上又不是一个Array实例

说arguments类似数组是因为其具备数组相同的访问性质及方式,能够由arguments
来访问对应的单个参数的值,并拥有数组长度属性length。但它不具有数组的方法。

arguments的属性:

length, 获取arguments对象的长度。

callee, 引用当前正在执行的函数。(与caller区别)

function a(x,y){
console.log(arguments[0]);
console.log(arguments.length);
}
a(11,13);
//输出
11
2

function a(x,y){
arguments[0].reverse();
}
a(11,13);
//输出
arguments.reverse is not a function


reverse是数组的内置函数,但argument却没有reverse函数,所以argument不是真正的数组。

arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表

在词法分析中, 首先按形参形成arguments的属性,值为undefined

当实参传来时, 再修改arguments的相应属性.

function a(x,y){
console.log(arguments.length);
}
a(11,13,34);//实际传递参数3个
//输出
3


所以用arguments对象可以设置函数的默认参数

function a(){
var a = arguments[0] ? arguments[0] : 1;
var b = arguments[1] ? arguments[1] : 2;
console.log(a+b);
}
a();//输出3
a(2);//输出4
a(3,4);//输出7


arguments与真正传的参数是一致的

即函数中的第一个参数和arguments[0]都是对这个参数值的引用

function a(i){
console.log(i);
console.log(arguments[0]);
i++;
console.log(i);
console.log(arguments[0]);
arguments[0]++;
console.log(i);
console.log(arguments[0]);
}
a(10);
//输出
10
10
11
11
12
12
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript