在JavaScript1.2之前,函数定义是只允许在顶层全局代码,但1.2的JavaScript可以嵌套函数定义其他函数中也是可以的。
仍然存在的函数定义可以循环或条件之内不会出现限制。在函数定义这些限制只适用于函数声明与函数语句。
正如我们将在下一章再讨论,函数文本(在JavaScript1.2引入的另一个功能)可能出现在任何JavaScript表达式,这意味着它们可以出现在if else语句内。
示例:
下面就是我们两个嵌套函数的例子。这可能会有点混乱,但它的工作原理完全正常:
<script type="text/javascript"> <!-- function hypotenuse(a, b) { function square(x) { return x*x; } return Math.sqrt(square(a) + square(b)); } //--> </script>
注:在这里,我们使用的是从数学类函数sqrt。以后会看到它在讨论对象的章节。
现在,可以调用通常的方式调用这一函数如下:
<script type="text/javascript"> <!-- hypotenuse(1, 2); // This will produce 2.2360 //--> </script>