// 定義一個函數,求出參數中的最小值 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。函數