function max1(){
console.log(arguments)
}
max1(2,5434,"hello");
检查参数个数,引用arguments.length
<script>
function args() {
console.log(arguments.length);
}
args(10);
args("how","many","arguments");
args("args",100);
</script>
模拟函数重载
<script>
function doAdd() {
if(arguments.length==1){
console.log(arguments[0]+13);
}else if(arguments.length==2){
console.log(arguments[0]+arguments[1]);
}
}
doAdd(10);
doAdd(13,55);
</script>
求最大值
function minValue() {
var minValue = arguments[0];
for(var i=1; i<arguments.length;i++){
minValue = Math.min(minValue,arguments[i]);
}
return minValue;
}
console.log(minValue(100,-1234,2525,-20));
JavaScript中的caller和callee属性
caller返回一个对函数的引用,该函数调用了当前的函数
funcitonName.caller functionName对象是所执行函数的名称
说明
对于函数来说,caller属性只有在函数执行时才有定义。如果函数由JavaScript程序的顶层调用,那么caller包含的就是null
function callerDemo(){
if(arguments.caller){
var a= callerDemo.caller.toString();
console.log(a);
}else{
console.log("This is a top function");
}
}
function handleCaller(){
callerDemo();
}
handleCaller();
function calleeDemo() {
console.log(arguments.callee);
}
calleeDemo();
</script>
callee
返回正在被执行的Function对象,也就是所指定的Function对象的正文
【function】arguments.callee
可选项function参数是正在执行的Function对象的名称
说明:
callee属性的初始值就是正在执行的Function对象。
callee属性是arguments对象的一个成员,它表示对函数本身的引用,这有利于匿名函数的递归或者保证函数的封装性。
arguments.length 实参长度,argument.callee.length是行参长度,由此可判断实参长度是否与行参长度一致
验证参数
function calleeLength(arg1,arg2) {
if(arguments.length == arguments.callee.length){
console.log("行参与实参的长度一样!");
return;
}else{
console.log("实参的长度:"+ arguments.length);
console.log("行参的长度:"+ arguments.callee.length);
}
}
calleeLength(10,23);
/*递归计算*/
var sum = function (n) {
if(n<=0)
return 1;
else
return n+arguments.callee(n-1);
}
console.log(sum(10));
/*一般递归函数*/
var count =function (n) {
if(n<=0)
return 1;
else
return n+count(n-1);
}
console.log(count(10));