js函数作为返回值

有何存在必要?

大概是为了引出闭包而设计。

例子?

如下面这个例子,一个匿名函数作为了函数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函数作为返回值可以实现内层函数在外层函数之外被调用!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.函数参数的默认值 (1).基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。
    赵然228阅读 4,064评论 0 0
  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 8,943评论 0 1
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,392评论 2 17
  • 86.复合 Cases 共享相同代码块的多个switch 分支 分支可以合并, 写在分支后用逗号分开。如果任何模式...
    无沣阅读 5,320评论 1 5
  • 最近的这段时间,大雨跑得更快了,跳的更高了,依然每天都很开心,很欢乐! 说话开始有逻辑了。经常的用……然后……然后...
    大雨不愁阅读 1,783评论 0 1

友情链接更多精彩内容