递增setInterval,不带全局变量

Incrementing setInterval without a global variable

本文关键字:全局变量 setInterval 递增      更新时间:2023-09-26
numba = 1;
function A() {
    numba++;
    console.log(numba);
}
$(function() {
    var numnum2 = 0;
    setInterval('A()',1000);
    //setInterval(B.apply($(this)), 1000);
});

function B() {
    $(this).numnum2++;
    console.log($(this).numnum2);
}

小提琴

我如何让B()作为A()减去全局变量?

$(function() {
    var numnum2 = 0;
    function B() {
        numnum2++;
        console.log(numnum2);
    }
    setInterval(A,1000);
    setInterval(B,1000);
});

function B() {
    if(typeof B.numnum2 === 'undefined') B.numnum2 = 0;
    B.numnum2++;
    console.log(B.numnum2);
}
$(function() {
    B.numnum2 = 0;
    setInterval(A, 1000);
    setInterval(B, 1000);
});

不确定你到底在找什么,但这是它吗?

function newA() {
    var numba = 0;
    setInterval(function() {
        numba++;
        console.log(numba);
    }, 1000);
}

你不能。JavaScript只按值传递。

可以传递带有属性的对象。

    function A(a) {
        a.numbna++;
        console.log('from A: ' + a.numbna);
    }
    
    $(function() {
        var a = { numbna : 0 };
        setInterval(function() { A(a) },1000);
        setInterval(function() { B(a) },1000);
        //setInterval(B.apply($(this)), 1000);
    });
    
    
    function B(a) {
        a.numbna++;
        console.log('from B: ' + a.numbna);
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>