<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" charset="UTF-8">
/**
* arguments:
* 1、对象只能在函数内部访问
* 2、可以访问实际参数
*/
function test(a,b,c,d){
if(test.length == arguments.length){
console.log('参数完整');
}else{
console.log('参数不完整');
}
console.log(test.length); // 4 arguments.callee.length 获取函数的形参个数
console.log(a+b);
console.log(arguments.length); // 2 arguments.length 获取函数实际的参数个数
for(var attr in arguments){ //遍历arguments对象 10 和 20
console.log(arguments[attr]);
}
}
test(10,20); //这里传递了只2个参数
/**
* arguments.callee :指的是函数的本身,像一个引用一样指向函数本身
*/
function fact(num){
if(num<=1){
return 1;
}else{
return num*fact(num-1);//这里使用函数名进行递归
//return num*arguments.callee(num-1); //这里使用arguments.callee()进行递归
}
}
console.log(fact(5)); //120
/**
* 这里告诉我们为什么最好使用arguments.callee
* 当函数使用函数名进行递归时,执行下面的语句会报错 ' fact is not a function'
* 但是使用arguments.callee就不会报错
*/
var f = fact;
fact = null;
console.log(f(5));
//这三句的执行分析:1 、f 被赋值了函数的引用,函数名也是一个包含了函数引用的变量
// 2、 函数名被赋值为null,不再是函数引用
// 当执行f(5)时,若是用函数名递归,那么就会报错‘fact is not a function’
// 而arguments.callee一直都指向函数本身,所以最好使用这个
</script>
</head>
<body>
</body>
</html>
javascript中arguments对象简单用法
最新推荐文章于 2024-06-04 23:30:50 发布