有何存在必要?
大概是为了引出闭包而设计。
例子?
如下面这个例子,一个匿名函数作为了函数a()的返回值。 匿名函数会返回bb。然后我们直接调用函数a。 结果是aa。 匿名函数并没有发挥作用,那如何调用该匿名函数呢?
<script>
function a(){
alert('aa')
return function(){
alert ('bb')
}
}
a()//aa
</script>
如下方法.这样的话结果就是aa,bb了。
<script>
function a(){
alert('aa')
return function(){
alert ('bb')
}
}
a()()//aa bb
</script>
或者 首先
<script>
function a(){
alert('aa')
return function(){
alert ('bb')
}
}
newFun=a();
newFun();//aa bb
</script>
试着与如下嵌套函数对比
function a(){
alert('aa')
function abs(){
alert ('bb')
}
abs();
}
a();//aa bb
结果是一样的,实现方法是不一样的,使用return时,内存函数的调用是在外层函数的外面被调用的。而不适用return函数时,内存函数只能在内层函数之外,外层函数之内被调用。
总结
js函数作为返回值可以实现内层函数在外层函数之外被调用!