关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

关于js中函数的默认值与动态参数arguments的总结

发布时间:2020-02-29 00:00:00

在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=>undefined10             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=>undefined10 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>动态参数argumentstitle> 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>

/template/Home/Zkeys/PC/Static