js中对闭包的理解

本人丝一枚,在刚刚过去的javascript学习中,对闭包这个知识真是,听课两分钟,懵逼一整天。今天闲来没事,看了下闭包。话不多说先上代码。

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <script>
            window.onload = function() {
                function aa() {
                    var x = 10;

                    function bb() {
                        alert(x++);
                    }
                    bb();
                    bb();
                }
                aa();
            }
        </script>
    </head>

    <body>
    </body>

</html>

先把代码在编辑器里自己手敲一遍。

好了还是先看截图吧稍后再敲

命名不规范,大家将就下啊,嘿嘿。

(1) 函数aa被调用执行里面的内容。里面又有一个函数bb,也被调用。看图就知道会弹出10。

(2)接着函数bb再次被调用。看图可以知道数值是几了吧。

说了这么多到底什么是闭包那,全让看代码了。下面就给大家一个通俗易懂的定义:有权访问另一个函数作用域内的变量都是闭包。是不是很易懂。

再被别人cai,知道怎么回答了吧。

总结:

闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会徒增内存消耗,另外使用闭包也要注意变量的值是否符合你的要求,因为他就像一个静态私有变量一样。

如果还不理解可以参考http://www.codeceo.com

posted @ 2016-05-13 20:25  lyr2  阅读(190)  评论(0)    收藏  举报