闭包

什么是闭包?

当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。

闭包这名字起得有点奇怪啊。

如下面例子
数A的内部函数B被函数A外的一个变量 c 引用。变量c是在outer function的外面,然后调用了A,而调用A A又要调用B。相当于c用了B(B是一个内部函数)。。就这么绕
举个例子

    function A()
    {
        
        function B()
        {
            console.log("hello,world")
        }//inner function over here
        
    return B;
    }//outer function over here
    
var c=A();
c();//hello word;

也可以这么写

function A()
    {
        
        function B()
        {
            console.log("hello,world")
        };
        
    return B
    }
    
A()();//hello,world

还可以这么写

    function A()
    {
        
        return function B()
        {
            console.log("hello,world")
        }();
        

    }
    
A();//hello,world

但是不能这么写

    function A()
    {
        
        function B()
        {
            console.log("hello,world")
        }();
        
    return B
    }()
    
A();

这里的关键是理解return B是啥意思。

如果是

    function A()
    {
        
        function B()
        {
            console.log("hello,world")
        };
        
    return B
    }
    
A();

那么结果是

image.png

返回函数本身。

总结

如果返回的是一个函数,那么调用的时候一定注意不能只调用外层,两层都要调用。

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

推荐阅读更多精彩内容

  • 本章将会介绍 闭包表达式尾随闭包值捕获闭包是引用类型逃逸闭包自动闭包枚举语法使用Switch语句匹配枚举值关联值原...
    寒桥阅读 5,447评论 0 3
  • 谈起闭包,它可是JavaScript两个核心技术之一(异步和闭包),在面试以及实际应用当中,我们都离不开它们,甚至...
    sponing阅读 3,994评论 0 7
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 4,693评论 2 6
  • 闭包: 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该...
    小裁缝sun阅读 3,788评论 0 5
  • 爱自己的第一课:看见你内心的需求 人的所有情绪,是需求没有得到满足的结果。 我们的动物本能,会使我们不由自主地把关...
    A真心待人阅读 3,214评论 0 0