JavaScript嵌套函數
在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>