JavaScript: funciones anidadas

Antes de JavaScript 1.2, la definición de funciones solo se permitía en el código global de nivel superior, pero JavaScript 1.2 permite que las definiciones de funciones también se aniden dentro de otras funciones. Aún así, existe una restricción de que las definiciones de funciones no pueden aparecer dentro de los bucles o condicionales. Estas restricciones sobre las definiciones de funciones se aplican solo a las declaraciones de función con la declaración de función.

Como veremos más adelante en el próximo capítulo, los literales de función (otra característica introducida en JavaScript 1.2) pueden aparecer dentro de cualquier expresión de JavaScript, lo que significa que pueden aparecer dentro de if y otras declaraciones.

Ejemplo

Pruebe el siguiente ejemplo para aprender a implementar funciones anidadas.

<html>
   <head>
      <script type = "text/javascript">
         <!--
            function hypotenuse(a, b) {
               function square(x) { return x*x; }
               return Math.sqrt(square(a) + square(b));
            }
            function secondFunction() {
               var result;
               result = hypotenuse(1,2);
               document.write ( result );
            }
         //-->
      </script>
   </head>
   
   <body>
      <p>Click the following button to call the function</p>
      
      <form>
         <input type = "button" onclick = "secondFunction()" value = "Call Function">
      </form>
      
      <p>Use different parameters inside the function and then try...</p>
   </body>
</html>

Salida