1.arguments是什么?
- arguments 是一个类数组对象
- arguments对象是函数内部的本地变量,已经不再是函数的属性了。
2.arguments有什么用?
-
在函数内部,使用特殊对象 arguments,无需明确指出参数名,就能访问这些参数。
举例来说,我在addAll(){ }函数中,使用了arguments[0],但是我没有指定参数,当我要调用addAll(2)时,给他传了一个参数就可以在函数中获取到arguments[0]=2。 -
还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。
如果一个函数有三个参数,那么arguments.length = 3,你可以通过以下方式获取参数:- arguments[0]
- arguments[1]
- arguments[2]
代码
function addAll(){
let sum = 0;
for(let i=0;i<arguments.length;i++){
sum +=arguments[i];
}
console.log(sum);
}
addAll(10,20);
3.如果我们在函数中自己定义了一个名为arguments的变量,会出现什么情况?
- 尝试之后发现整个程序报错,提示** Identifier 'arguments' has already been declared**,所以不要定义arguments变量。
4.callee属性
callee
属性是一个指针,指向拥有这个arguments
对象的函数
- 用callee实现阶乘
function fac(num){
if( num <= 1 ){
return 1;
} else{
return num*arguments.callee(num-1);
}
}
- 解除函数名与函数体之间的耦合,对上面的函数fac,进行下面的操作
let newFac = fac;
fac = function(){
return 0;
}
alert(newFac(5)); //120
alert(fac(5)); //0
网友评论