函數的默認值與動態參數arguments的總結

在js函數與做用域,瞭解函數基本概念中,咱們發現當函數的實參有一個沒有上傳的時候,對應的形參time展現的值就是undefined,以下代碼所示:html

 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>
相關文章
相關標籤/搜索