JavaScript - Funzioni annidate

Prima di JavaScript 1.2, la definizione di funzione era consentita solo nel codice globale di primo livello, ma JavaScript 1.2 consente di annidare le definizioni di funzione anche all'interno di altre funzioni. Tuttavia esiste una limitazione per cui le definizioni di funzione potrebbero non apparire all'interno di cicli o condizionali. Queste restrizioni sulle definizioni di funzione si applicano solo alle dichiarazioni di funzione con l'istruzione di funzione.

Come vedremo più avanti nel prossimo capitolo, i letterali di funzione (un'altra caratteristica introdotta in JavaScript 1.2) possono apparire all'interno di qualsiasi espressione JavaScript, il che significa che possono apparire all'interno if e altre dichiarazioni.

Esempio

Prova il seguente esempio per imparare a implementare le funzioni nidificate.

<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>

Produzione