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);
}

Violon

Comment puis-je faire en sorte que B() fonctionne comme A() moins la variable globale?

1
P.Brian.Mackey 9 déc. 2011 à 19:12

3 réponses

Meilleure réponse
$(function() {
    var numnum2 = 0;

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

    setInterval(A,1000);
    setInterval(B,1000);
});

Ou

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);
});
3
Felix Kling 9 déc. 2011 à 15:16

Tu ne peux pas. JavaScript ne passe que par valeur.

Vous pouvez passer un objet avec la propriété.

    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>
1
Viral 28 sept. 2015 à 06:38

Vous ne savez pas exactement ce que vous cherchez, mais est-ce bien cela?

function newA() {
    var numba = 0;

    setInterval(function() {
        numba++;
        console.log(numba);
    }, 1000);
}
1
tinyd 9 déc. 2011 à 15:20
8447537