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>