函数的深入使用

zhushican 2年前 (2022-08-11) 六六互联 295 0

word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">函数的深入使用

word; clear: both; text-indent: 2em; color: rgb(24, 30, 51); font-family: PingFangSC, 微软雅黑, 黑体, Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);">函数的深入使用

  1. 1)   可变参数

函数的参数列表可以是任意多个,并且数据类型可以是任意的类型JavaScript的函数天然支持可变参数,JavaScript有一个arguments变量可以访问所有传到函数内部的参数。

 

<script>

 

    /*add函数是一个参数可变的函数*/

 

    function  add(){

 

        var  result=0;

 

for(var i=0;i<arguments.length;i++){

 

             //alert(arguments[i]);

 

             result+=arguments[i];

 

        }

 

        return  result;

 

    }

 

     alert("add(1,2,3)="+add(1,2,3));//调用add函数时传入3个参数

 

     alert("add(1,2,3,4,5,6)="+add(1,2,3,4,5,6));//调用add函数时传入6个参数

 

    alert("add()="+add());//调用add函数时不传入参数

 

     alert("add(1,\"HelloWorld\")="+add(1,"HelloWorld"));//调用add函数时传入不同类型的参数</ <script>

 
  1. 2)   javascript创建动态函数

JavaScript支持创建动态函数,动态函数必须用Function对象定义(Function是javascript中的一个对象,是固定不变的,规定Function对象的"F"必须大写,当是function的时候,我们知道是定义函数的时候所使用的一个关键字:function funName(x,y),当是Function的时候(F大写的时候),我们知道是javascript中的对象)。

创建动态函数的基本格式:var 变量名 = new Function("参数1","参数2","参数n","执行语句");

使用new关键字(new是javascript中一个关键字,也是固定的,我们在定义动态函数的时候必须要使用new来创建这个Function对象)

我们先定义一个变量: var 变量名,在这里,变量名是随便的,然后我们再使用new关键字创建一个Function对象,然后再把这个对象赋值给这个任意的变量,也就是:var 变量名 = new Function("参数1","参数2","参数n","执行语句");Function后面的括号里先是传递给函数的参数,然后用一个逗号(,)隔开然后是这个函数要执行的功能的代码

 

<script>

 

    var square =  new Function ("x","y","var sum ; sum = x+y;return  sum;");

 

     alert("square(2,3)的结果是:"+square(2,3));

 

</script>

 
  1. 3)   匿名函数

直接声明一个匿名函数,立即使用。用匿名函数的好处就是省得定义一个用一次就不用的函数,而且免了命名冲突的问题,js中没有命名空间的概念,因此很容易函数名字冲突,一旦命名冲突以最后声明的为准。

 

<script>

 

    var f1 =  function(i1, i2) { return i1 + i2 };

 

     alert(f1(1,2));

 

</script>

 
  1. 4)   JavaScript不支持函数的重载

JavaScript没有方法重载的说法,如果两个方法名字一样,即使参数个数不一样,那么后面定义的就会覆盖前面定义,调用方法时永远是调用后定义的那个。

 

<script type="text/javascript">

 

    function  Test(a){

 

        alert(a);

 

    }

 

    function  Test(a,b){

 

         alert("HelloWorld!");

 

    }

 

    function  Test(a,b){

 

alert(a+" "+b);

 

    }

 

    Test(20);//调用的是最后定义的那个Test方法

 

     Test(30,50);//调用的是最后定义的那个Test方法

 

</script>