js中的闭包

闭包是程序开发中的一个专业术语,咋一听似乎很神秘,难以理解,查找官方解释:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分,似乎也难以理解。
不过在写一些js程序的时候,我们会不知不觉的用到一些闭包的知识。
说简单一点,其实闭包就是:子函数可以使用父函数中的局部变量,这种行为就叫做闭包!

    <script type="text/javascript">
        function diaoyu(){
            var num=0;
            return{
                diao:function(){
                    num++;
                },
                count:function(){
                    alert("钓了"+num+"条鱼!!!");
                }
            }
        }
        
        var obj = diaoyu();
        obj.diao();
        obj.count();
        obj.diao();
        obj.count();
    </script>

从上面我们可以看到,当给obj赋值时,diaoyu方法执行,会返回一个包含两个自定义方法的对象,这时对象内部共同引用了diaoyu的num变量,当执行obj.diao()时,num变量加1之后值变为1,当再次执行后,num的值会变成2,这其实类似我们在使用高级语言时创建对象后,调用对象的方法修改对象的值很相似,当然,此处的闭包仅仅是指js的闭包。

js中的闭包,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。