javascript - js中如何實作靜態變數
天蓬老师
天蓬老师 2017-06-26 10:58:14
0
5
792
<button type="button" onclick="func();">按钮</button>

var i = 0;
func(){
    i += 1;
    console.log(i)
}

需求:點選按鈕變數自增1。求最好的實作方法。
補充一下,實作方法有很多。

  1. 直接儲存到全域變數裡-污染了全域命名空間

  2. #使用一個全域數組保存目前app的全域變數-不符合目前架構

  3. 閉包-似乎不適應當前場景(使用onclick觸發函數)

  4. 停靠在html元素中-還是很low

  5. 使用一個大的匿名函數來延長變數的生命週期-不符合目前架構

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(5)
某草草

誰說閉包不適用?

var func = (function(){
var i = 0;
return function(){
    i++;
    console.log(i);
}

}());

或你可以這樣:

var func = function(){
    func.i++;
    console.log(func.i);
};
func.i = 0;
洪涛

保存在dom節點屬性中

<button data-click-number="0" type="button" id="incBtn" >按钮</button>
$("#incBtn").on('click',function(){
 var preClickNumber=$(this).attr('data-click-number') ?: 1;
 $(this).attr('data-click-number',preClickNumber++);
});
过去多啦不再A梦

js沒有靜態變數。 只有局部變數與全域變數。

<button type="button" onclick="++i">按钮</button>

var i = 0;
大家讲道理

不是用let

黄舟

閉包大發好,建議題主去看看javascript的函數式的一些書籍,這也是JavaScript的一大特色

let click = (() => {
    var i = 0;
    return function() {
      i += 1;
      console.log(i)
    }
})()
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!