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