// 定义一个函数,求出参数中的最小值 function min(a,b,c,d...) { //函数的代码 }
min(1,2,3,4,5,6,7...);
function min(a, b) { return a>b? b:a; } 调用 min(1,2);
形参
是什么?形参
有几个?实参
有几个?实参
个数就是两个实参
传递几个就是有几个,调用函数时,我传递的实参个数能不能大于形参个数?function min(a, b) { return a>b? b:a; } var result=min(1,2,-1,4) console.log(result) //输出 1
以上代码说明,咱们能够传递的参数大于形参个数,且不会出错。数组
答案是,咱们的另外两个参数被放在了函数的arguments
中,咱们来看看arguments
是个什么app
function min(a,b) { console.log(arguments); return a>b? b:a; } var result=min(2,6,90,10) console.log(result) //输出 2
arguments
中。arguments.length
便可,当前有4个min.length
arguments
看着像是个数组,不过,它可并非一个数组哦,它是个object类型的,for(var i in arguments){ console.log(arguments[i]) }
//两个数字中的最小值 function min(a,b){ return Math.min(a,b); } min(1,2); //四个数字中的最小值 function min(a, b, c, d){ return Math.min(a,b,c,d); } min(1, 2,3,4); //6个数字中的最小值 function min(a, b, c, d,e,f){ return Math.min(a, b, c, d,e, f); } min(1, 2,3,4,5,6); //n个数字中的最小值 function min(a, b, c, d,e,f,...n){ return Math.min(a, b, c, d,e, f,...n); } min(1, 2,3,4,5,6,...n); //随着咱们要比较的数字的增多,个人函数形参数目也愈来愈多, //有了arguments这个对象,形参数目不就能够不写了么,像这样 function min(){ var res=arguments[0] for(var i in arguments){ if(i==0) continue; res=res>arguments[i]?arguments[i]:res; } return res; } min(1, 2,3,4); //代码更精简点,还能够这样 function min(){ return Math.min.apply(this,arguments); } min(1, 2,3,4,-1,2,0-3);//-3
function min(a, b) { return a>b? b:a; } var result=min(1) console.log(result) //输出 1
以上代码说明,咱们能够传递的参数小于形参个数,且不会出错。
为何不会出错?由于当咱们不给min函数传递 b 这个参数的时候,b这个参数为 undefined
,这时候,a>undefined 为false,由于b转换为数值类型以后是 NaN。函数