JavaScript从入门到精通(微视频精编版)
上QQ阅读APP看书,第一时间看更新

4.4 嵌套函数

视频讲解

在JavaScript中允许使用嵌套函数,嵌套函数就是在一个函数的函数体中使用了其他的函数。嵌套函数的使用包括函数的嵌套定义和函数的嵌套调用,下面分别进行介绍。

4.4.1 函数的嵌套定义

函数的嵌套定义就是在函数内部再定义其他的函数。例如,在一个函数内部嵌套定义另一个函数的代码如下:

    01  function outFun(){        //定义外部函数
    02      function inFun(x,y){  //定义内部函数
    03          alert(x+y);       //输出两个参数的和
    04      }
    05      inFun(1,5);           //调用内部函数并传递参数
    06  }
    07  outFun();                 //调用外部函数

运行结果如图4.8所示。

图4.8 输出两个参数的和

在上述代码中定义了一个外部函数outFun(),在该函数的内部又嵌套定义了一个函数inFun(),它的作用是输出两个参数的和,最后在外部函数中调用了内部函数。

注意

虽然在JavaScript中允许函数的嵌套定义,但它会使程序的可读性降低,因此,尽量避免使用这种定义嵌套函数的方式。

4.4.2 函数的嵌套调用

在JavaScript中,允许在一个函数的函数体中对另一个函数进行调用,这就是函数的嵌套调用。例如,在函数b()中对函数a()进行调用,代码如下:

    01  function a(){                     //定义函数a()
    02      alert("零基础学JavaScript");  //输出字符串
    03  }
    04  function b(){                     //定义函数b()
    05      a();                          //在函数b()中调用函数a()
    06  }
    07  b();                              //调用函数b()

运行结果如图4.9所示。

图4.9 函数的嵌套调用并输出结果

例4.03】 《我是歌王》的比赛中有3位评委,在选手演唱完毕后,3位评委分别给出分数,将3个分数的平均分作为该选手的最后得分。周星星在演唱完毕后,3位评委给出的分数分别为91分、89分、93分,通过函数的嵌套调用获取周星星的最后得分。代码如下:(实例位置:资源包\源码\04\4.03)

    01  <script type="text/javascript">
    02  function getAverage(score1,score2,score3){              //定义含有3个参数的函数
    03     var average=(score1+score2+score3)/3;               //获取3个参数的平均值
    04     return average;                                     //返回average变量的值
    05  }
    06  function getResult(score1,score2,score3){               //定义含有3个参数的函数
    07     //输出传递的3个参数值
    08     document.write("3个评委给出的分数分别为:"+score1+"分、"+score2+"分、"+score3+"分<br>");
    09     var result=getAverage(score1,score2,score3);         //调用getAverage()函数
    10     document.write("周星星的最后得分为:"+result+"分");  //输出函数的返回值
    11  }
    12  getResult(91,89,93);                                   //调用getResult()函数
    13  </script>

运行结果如图4.10所示。

图4.10 输出选手最后得分