第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

JS惰性函數(shù)作為回調(diào)函數(shù)時不自我更新

JS惰性函數(shù)作為回調(diào)函數(shù)時不自我更新

森林海 2018-12-12 18:14:26
將惰性函數(shù)傳入點擊事件作為回調(diào)函數(shù),但為什么不會更新,總是執(zhí)行原來的函數(shù)?只知道把函數(shù)賦給其他變量或?qū)ο髮傩詠碚{(diào)用會導(dǎo)致不更新可是作為回調(diào)函數(shù),內(nèi)部有觸及以上兩點嗎? 求解//顯示、隱藏         var log = console.log.bind(console)        var tog = function() {            log(1)             $('.box').hide()            tog = function () {                log('lljl')                $('.box').show()            }        }        setInterval(tog,100)        // $('input').click(tog);
查看完整描述

1 回答

?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊

setInterval()中傳入的 tog 是一個引用,引用的是一開始的函數(shù)


后來給 tog 重新賦值,所以它引用的函數(shù)變量了,但是 setInterval() 中仍然使用的仍然是原來那個函數(shù)……


把 setInterval(tog, 100) 改成 setInterval(function() { tog(); }, 100); 就好


不過我估計你是想制造閃爍的效果,但是有兩個問題沒處理


show 之后沒有把 tog 賦值成 hide 的處理函數(shù)

沒有停止的邏輯

寫個示例:


//顯示、隱藏 

var log = console.log.bind(console);


var timer = 0;


var tog = (function() {

    var count = 0;

    var current = hide;


    function hide() {

        // $(".box").hide();

        log("hide");

        current = show;

    }


    function show() {

        // $(".box").hide();

        log("show");

        current = hide;

    }


    return function() {

        if (count > 10) {

            clearInterval(timer);

        } else {

            current();

            count++;

        }

    };

})();


timer = setInterval(tog, 100);


查看完整回答
反對 回復(fù) 2019-01-15
  • 1 回答
  • 0 關(guān)注
  • 489 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號