在调用函数时,browser每次都会传递两个隐含的参数;
1:this
2:arguments (类数组对象)
--它可以通过索引来操作数据,也可以获取长度
--调用函数时,传递的实参都会在arguments中保存
--arguments.length;可以获取实参的长度
--即使不定义形参,也可以通过arguments来使用实参
3 :arguments 对象中有一个属性 callee ,指向当前函数对象(递归用到)
function f() {
console.log(arguments instanceof Array);//检查是否为数组
//console.log(Array.isArray(arguments))//也可以用数组对象上的isArray()检查
arguments.length;//-->3
arguments[0];-->1
}
f(1,2,3);
//注意
function
f
(
a
,
b
,
c
) {
arguments
[
0
]
=
12
;
console
.
log
(
a
)--->12
}
f
(
1
,
2
,
3
)
function
f
(
a
,
b
,
c
) {
a
=
12
;
console
.
log
(
arguments
[
0
]);-->12
}
f
(
1
,
2
,
3
)
//也就说 arguments中的数据与定义的形参时相互关联的
如 arguments.callee递归调用
function
f
(
n
) {
if
(
n
<=
1
) {
return
1
;
}
else
{
return
n
*
arguments
.callee(
n
-
1
);
}
}
console
.
log
(
f
(
5
));