zoukankan      html  css  js  c++  java
  • 函数的默认值与动态参数arguments的总结

    在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>
  • 相关阅读:
    进程,线程,协程,异步IO知识点
    Socket网络编程知识点
    面向对象编程知识点
    Zabbix系列之七——添加磁盘IO监测
    WARNING: 'aclocal-1.14' is missing on your system.
    tomcat的catalina.out日志按自定义时间日式进行分割
    Plugin with id 'com.novoda.bintray-release' not found.的解决方案
    MaterialCalendarDialog【Material样式的日历对话框】
    导入项目报错【Minimum supported Gradle version is 3.3. Current version is 2.14.1】
    通过Calendar简单解析Date日期,获取年、月、日、星期的数值
  • 原文地址:https://www.cnblogs.com/webaction/p/12378357.html
Copyright © 2011-2022 走看看