在js函數與作用域,瞭解函數基本概念中,我們發現當函數的實參有一個沒有上傳的時候,對應的形參time展示的值就是undefined,那麼如何在不上傳time的情況下,解決這個預設值了?方法2種:1.if(time==undefined) 2. time=7;除此之外,函數的另外一個重要特征動態參數a... ...
在js函數與作用域,瞭解函數基本概念中,我們發現當函數的實參有一個沒有上傳的時候,對應的形參time展示的值就是undefined,如下代碼所示:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>函數的預設值問題</title> 7 <script> 8 function myshelf(num,time) 9 {//預設值time=>undefined 10 for(var a=1;a<=num;a++) 11 { 12 console.log(time+'點第'+a+'遍'+'好好學習,天天向上'); 13 } 14 } 15 var time=7; 16 myshelf(10) ;// 有一個實參沒有傳; 17 var time=7; 18 myshelf(10,12) ;// var time=12; 19 </script> 20 </head> 21 <body> 22 </body> 23 </html>
怎麼解決函數預設值undefined的情況,可以用if條件語句,或者邏輯或.用方式一,含義是如果time的預設值等於undefined,那麼此時time值等於7,否則不執行此語句;方式二:time=time或者time=8,前者是如果time=time,那麼此時就傳入了實參,不執行後面的語句或者是time=8,說明此時沒有傳值進來,那麼函數此時time的預設值為8
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>函數預設值undefined解決2種方式</title> 7 <script> 8 function myshelf(num,time) 9 {//預設值time=>undefined 10 11 // if(time==undefined) 12 // time=7; //方式一:if條件語句 13 14 time=time||8; //方式二:邏輯或 15 16 for(var a=1;a<=num;a++) 17 { 18 console.log(time+'點第'+a+'遍'+'好好學習,天天向上'); 19 } 20 } 21 var time=7; 22 myshelf(10) ; 23 var time=7; 24 myshelf(10,12) ; 25 </script> 26 </head> 27 <body> 28 </body> 29 </html>
函數除了預設值還有動態參數,比方說我想要這些數字add(1,2,4,5,23)全部相加,但是在return z=x+y的情況下下只是相加2個數字,那麼其他的數字能不能相加了,當然是可以的,怎麼辦了?這時候就用到了我們的動態數組arguments了,函數add(1,2,4,5,23)這裡面的數值都以數組的形式傳遞到定義的function裡面執行,此時的arguments=>[1,2,4,5,23]約等於,定義function裡面的x,y對應x=arguments[0];y=arguments[1];數值的計算用到for迴圈的數組遍歷,數組的長度為length*此時function add(x,y)裡面的x,y可以不用寫.
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>動態參數arguments</title> 7 <script> 8 // function add(x,y){//加法 函數得定義 9 // //[1,2,4,5,23] 10 // return x+y; 11 // } 12 // var rs=add(1,2,4,5,23); //函數得調用 13 // console.log('1+2 4,5,23='+rs); 14 // var rs=add(3,4); 15 // console.log('3+4='+rs); 16 //==========================無情分割線=============================== 17 function add(x,y){ 18 // var arguments=>[1,2,4,5,23] 19 // x=arguments[0]; 20 // y=arguments[1]; 21 var z=0; 22 for(var i=0;i<arguments.length;i++){ 23 z+=arguments[i]; 24 } 25 return z; 26 //return z=x+y; 27 } 28 var rs=add(1,2,4,5,23); 29 console.log('1+2+4+5+23='+rs); 30 var rs=add(3,4); 31 console.log('3+4='+rs); 32 var rs=add(111,222,333,444,555); 33 console.log('111+222 333,444,555='+rs); 34 </script> 35 </head> 36 <body> 37 </body> 38 </html>