2011-12-09 65 views
1
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); 
} 

Fiddle遞增的setInterval沒有一個全局變量

我怎樣才能得到B()充當A()減去全局變量?

回答

3
$(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); 
}); 
1

你不能。 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>

1

不知道你尋找什麼,但是這是什麼呢?

function newA() { 
    var numba = 0; 

    setInterval(function() { 
     numba++; 
     console.log(numba); 
    }, 1000); 
}