在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>
来源:https://www.cnblogs.com/dhnblog/p/12378357.html