嵌套函数,简单来说,就是在一个函数的内部定义另外一个函数。不过在内部定义的函数只能在内部调用,如果在外部调用,就会出错。

举例:嵌套函数用于“阶乘”

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script> //定义阶乘函数 function func(a) { //嵌套函数定义,计算平方值的函数 function multi (x) { return x*x; } var m=1; for(var i=1;i<=multi(a);i++) { m=m*i; } return m; } //调用函数 var sum =func(2)+func(3); document.write(sum); </script> </head> <body> </body> </html>

浏览器预览效果如图所示。

分析:

在这个例子中,我们使用了定义了一个函数func,这个函数有一个参数a,然后在func()内部定义了一个函数multi()。其中,multi()作为一个内部函数,只能在函数func()内部使用。对于func(2), 我们把2作为实参传进去,此时func(2)等价于:

function func(2) { function multi(2) { return 2 * 2; } var m = 1; for (var i = 1; i <= multi(2) ; i++) { m = m * i; } return m; }

从上面我们可以看出,func(2)实现的是1×2×3×4,也就是4的阶乘。同理,func(3)实现的是1×2×…×9,也就是9的阶乘。

嵌套函数功能是非常强大的,并且跟JavaScript最重要的一个概念“闭包”有着直接的关系。不过对于初学者来说,我们只需要知道有嵌套函数这一回事就行了。