为了账号安全,请及时绑定邮箱和手机立即绑定

关于js中闭包 私有变量计数器的问题

关于js中闭包 私有变量计数器的问题

LEATH 2019-03-07 14:15:28
在第5次弹出之后 值不增加了如果alert(count());方式弹出的话 会正常增加 +1赋值给变量之后 var c = count();值就不变了求大神指点<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Document</title>    <script type="text/javascript">        var count = (function(){            var a = 0;            function bb(){                a ++;                return a;            }            return bb;        })();    alert(count());    //弹出1    alert(count());    //弹出2    alert(count());    //弹出3    alert(count());    //弹出4    var c = count();    alert(c);    //弹出5    alert(c);    //弹出5    alert(c);    //弹出5        </script></head><body>    </body></html>
查看完整描述

3 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

明白函数调用吗?


function f() {

   return 1;

}


alert(f())


c = f()


alert(c)

道理是一样的,c是函数的结果。


具体到你的代码,count也是个函数,只是它有个闭包,所以每次调用结果不一样。


查看完整回答
反对 回复 2019-03-18
?
守候你守候我

TA贡献1802条经验 获得超10个赞

老哥啊,一个是函数调用,一个是固定值啊。
var c=count();这是赋值语句,c就固定不变了。
count();这是直接调用,每次调用都重新计算,返回的自然不一样。
基础不扎实啊。

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 591 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信