Avant JavaScript 1.2, les définitions de fonctions n'étaient autorisées que dans le code global de niveau supérieur, mais JavaScript 1.2 peut imbriquer les définitions de fonctions dans d'autres fonctions.
Les définitions de fonctions encore existantes peuvent être bouclées ou restreintes dans des conditions sans apparaître. Ces restrictions sur les définitions de fonctions s'appliquent uniquement aux déclarations de fonction et aux instructions de fonction.
Les littéraux de fonction (une autre fonctionnalité introduite dans JavaScript 1.2) peuvent apparaître dans n'importe quelle expression JavaScript, ce qui signifie qu'ils peuvent apparaître dans des instructions if else.
Exemple :
Voici des exemples de nos deux fonctions imbriquées. Cela peut être un peu déroutant, mais cela fonctionne parfaitement :
<script type="text/javascript"> <!-- function hypotenuse(a, b) { function square(x) { return x*x; } return Math.sqrt(square(a) + square(b)); } //--> </script>
Remarque : Ici, nous utilisons la fonction sqrt du cours de mathématiques.
Maintenant, cette fonction peut être appelée de la manière habituelle comme suit :
<script type="text/javascript"> <!-- hypotenuse(1, 2); // This will produce 2.2360 //--> </script>