day-8.2 函数的参数(形参、实参、不定参)

函数的参数分为形参,实参,不定参

形参:形式参数、就是定义函数的时候,定义函数括号里的参数(变量名),相当于在函数这个作用域里面定义了一个变量

实参:实际参数、就是函数执行的时候,执行函数的括号里的实际参数(数据),这就叫做实参

举例:

 

1 <script>
2     var a = function (a , b ){ //定义函数的时候定义了2个形参;  形参定义的参数a和函数外部的变量a没有关系。类似于在函数内var a ,和 var b,跟定义变量不同的是,参数可以在执行的时候作为传参的模板。
3     alert(a+b);
4 };
5     a(3,4); //这里传入的为实参,输出7 
6 a("3",4); //输出34
7 </script>

 

函数调用执行,传参的时候,可以引用变量

比如

1 var a = function(a,b){
2   alert(a+b);  
3 };
4 var b = 4;
5 a(3,b); //输出7;这里的b是引用了变量b的值,还是数据,而不是变量。 

 

实参还可以是函数、数组、json等任何数据类型

 1 <body>
 2     <script>
 3             var a = function (a , b ){
 4                 if (a)
 5                 {
 6                     b(5);   //执行传入的函数(实参),执行的同时再传入实参5;最终弹出5; //多出使用a变量,但是不冲突,这是因为函数隔离开作用域,后面会讲。
 7                 }
 8             };
 9             a(true,function (a){
10                 alert(a);
11             });
12     </script>
13 </body>

 

需要注意一点,参数传过来的时候,不做任何操作的时候,会保留参数的原有数据类型。

如果已经做了操作,会根据操作的结果转变数据类型。

1 var a = function (a,b){
2                 alert(typeof b ); //function
3                 alert(typeof (a+b) ); //string
4             }
5             a(1,function (){
6                 alert(1);
7             });

 

形参和实参不一一对应的情况(实参多于形参,和实参少于形参);

1 var a = function (a,b){
2     alert(a+b);
3 }
4     a("123");   //实参少于形参,输出 123undefined,b相当于一个定义却未赋值的变量。
5     a(1,2,3,4); //实参多于形参,输出3,多了的实参未调用则忽略。

 

不定参:每个函数都有个默认伪数组的属性,用来存储函数执行时传过来的参数。不定参就是函数执行时传过来的参数不确定时,可以通过argument属性去调用参数。

https://www.cnblogs.com/hanhanhan/p/5765920.html  //arguments存在哪?

 1 <script>
 2     function sum(){
 3           console.log(arguments);
 4           var s = 0 ;
 5           for (var i = 0,j=arguments.length;i < j;i++){ //函数sum未设定参数,执行的时候传入的实参为不定参,通过arguments属性读取参数;通过for循环,遍历数组arguments下标读取值相加;
                                   读下标一般将下标赋值给一个变量,再读取变量,避免反复读取属性的.length; j=arguments.length,可以紧跟着var i 后面去定义。
6 s+=arguments[i]; 7 } 8 alert(s); //输出21; 9 } 10 sum(1,2,3,4,5,6); 11 </script>

 

posted @ 2018-06-04 02:07  bibiguo  阅读(235)  评论(0)    收藏  举报