arguments用法:
<script>
//arguments该对象表示正在执行的函数和调用它的函数的参数
//注意:arguments是一个类似数组但不是数组的对象
function test(a,b){
alert(arguments.length); //实际传入参数的个数
alert(test.length); //期望传入参数的个数,这里是2
for(var i=0;i<arguments.length;i++){ //获取参数内容
alert("参数为"+arguments[i]);
}
alert(arguments.callee); //callee属性的初始值就是正在被执行的function对象,打印其function本身
alert(arguments.callee.length); //表示形参长度,等于test.length
}
test(); //0,2
test("aaa","bbb"); //2,2
test("aaa","bbb","ccc"); //3,2
</script>
arguments.callee用法:
<script>
//arguments.callee实现递归函数
var a = function(n){
if(n <= 0){
return 0;
}else{
return n + arguments.callee(n-1);
}
}
alert(a(5)); //5+4+3+2+1+0=15
//注意,相较于return n+a(n-1)这种写法,更好的体现出调用自身,而调用a(),则相当于在函数内部调用了一个全局变量
</script>
<script>
//arguments该对象表示正在执行的函数和调用它的函数的参数
//注意:arguments是一个类似数组但不是数组的对象
function test(a,b){
alert(arguments.length); //实际传入参数的个数
alert(test.length); //期望传入参数的个数,这里是2
for(var i=0;i<arguments.length;i++){ //获取参数内容
alert("参数为"+arguments[i]);
}
alert(arguments.callee); //callee属性的初始值就是正在被执行的function对象,打印其function本身
alert(arguments.callee.length); //表示形参长度,等于test.length
}
test(); //0,2
test("aaa","bbb"); //2,2
test("aaa","bbb","ccc"); //3,2
</script>
arguments.callee用法:
<script>
//arguments.callee实现递归函数
var a = function(n){
if(n <= 0){
return 0;
}else{
return n + arguments.callee(n-1);
}
}
alert(a(5)); //5+4+3+2+1+0=15
//注意,相较于return n+a(n-1)这种写法,更好的体现出调用自身,而调用a(),则相当于在函数内部调用了一个全局变量
</script>