JavaScript - 嵌套函数 ( nested functions )



在 JavaScript 1.2 之前,函数定义只允许在顶级全局代码中,但 JavaScript 1.2 也允许将函数定义嵌套在其他函数中。仍然存在一个限制,即函数定义不能出现在循环或条件中。对函数定义的这些限制仅适用于带有 function 语句的函数声明。

正如我们将在下一章后面讨论的那样,函数字面量(JavaScript 1.2 中引入的另一个功能)可以出现在任何 JavaScript 表达式中,这意味着它们可以出现在 if 和其他语句中。

请尝试以下示例,了解如何实现嵌套函数。


<html>
<head>
	 <script type = "text/javascript">
			<!--
				 function hypotenuse(a, b) {
						function square(x) { return x*x; }
						return Math.sqrt(square(a) + square(b));
				 }
				 function secondFunction() {
						var result;
						result = hypotenuse(1,2);
						document.write ( result );
				 }
			//-->
	 </script>
</head>
<body>
	 <p>单击以下按钮调用函数</p>
	 <form>
			<input type = "button" onclick = "secondFunction()" value = "调用函数">
	 </form>
	 <p>在函数内使用不同的参数,然后尝试。。。</p>
</body>
</html>

输出

2.23606797749979