亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于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 關注
  • 608 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號