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>

 


上一篇: JavaScript函數 下一篇: JavaScript Function() 構造