猿问

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

在第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>


LEATH
浏览 593回答 3
3回答

慕后森

明白函数调用吗?function f() {&nbsp; &nbsp;return 1;}alert(f())c = f()alert(c)道理是一样的,c是函数的结果。具体到你的代码,count也是个函数,只是它有个闭包,所以每次调用结果不一样。

守候你守候我

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

相关分类

JavaScript
我要回答