美文网首页Web程序员
简单理解JavaScript闭包

简单理解JavaScript闭包

作者: z0nka1 | 来源:发表于2016-10-15 15:27 被阅读31次

    很多关于JS的书籍例如《JavaScript权威指南》或者《高程》都把闭包解释的晦涩难懂,萌新们是怎么也看不懂啊!不过别怕,今天我就用很简单的方式给大家讲解下到底什么是闭包。这是一篇面对新手的对于闭包的解释,没有晦涩生硬的语句,一看就能明白。如有不妥欢迎指正!
    要理解闭包,首先要理解变量的作用域
    JS中变量作用域有两个:全局变量以及局部变量,顾名思义,全局变量就是在任何位置都可以引用的变量,局部变量就是只能在特定位置才能引用的变量,看下面代码。

    var globalScope="global scope";
    function f(){
        var localScope="local scope";
        console.log(globalScope);//global scope
    }
    console.log(localScope);//undefined
    

    在函数f()内可以访问到函数体外定义的globalScope,而在函数体外不能访问到函数体内定义的localScope,这就是全局变量与局部变量的区别。
    难道在函数体外就永远访问不到localScope了吗?非也,闭包就是为此而生。

    function f(){
        var localScope="local scope";
        return function(){
            console.log(localScope);
        }
    }
    f()();//local scope
    

    我们在函数f()外访问到了局部变量localScope,这里在函数f()内定义的匿名函数就是一个闭包!

    这里两个圆括号是什么意思呢?我们可以简单理解成执行两次f(),执行一次得到function(){console.log(localScope);},再执行一次相当于执行这个匿名函数。

    好了,对闭包的简单理解就是这么多,谢谢阅读!
    原创文章,转载请注明出处!

    相关文章

      网友评论

        本文标题:简单理解JavaScript闭包

        本文链接:https://www.haomeiwen.com/subject/ssinyttx.html