嵌套函数,简单来说,就是在一个函数的内部定义另外一个函数。不过在内部定义的函数只能在内部调用,如果在外部调用,就会出错。
举例:嵌套函数用于“阶乘”
<!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最重要的一个概念“闭包”有着直接的关系。不过对于初学者来说,我们只需要知道有嵌套函数这一回事就行了。