Javascript 为什么在setInterval的第二次时递减变得大于-1? $(文档).ready(函数(e){ var计数=10; 设置间隔(定时器,1000); 绿色变量=真; 函数计时器() { 如果(计数
这是一个简单的红绿灯柜台。起初它以1098756542 1的形式运行,下一次它变成108642 0,然后是1074 1,您不需要多次创建/设置它:Javascript 为什么在setInterval的第二次时递减变得大于-1? $(文档).ready(函数(e){ var计数=10; 设置间隔(定时器,1000); 绿色变量=真; 函数计时器() { 如果(计数,javascript,Javascript,这是一个简单的红绿灯柜台。起初它以1098756542 1的形式运行,下一次它变成108642 0,然后是1074 1,您不需要多次创建/设置它: $(document).ready(function(e) { var count=10; setInterval(timer, 1000); var green = true; function timer() { if (count < 1)
$(document).ready(function(e) {
var count=10;
setInterval(timer, 1000);
var green = true;
function timer()
{
if (count < 1)
{
count = 10;
setInterval(timer, 1000);
green ? green=false : green = true;
}
$('#tl').empty();
if(green)
$('#tl').append(count).css('color', '#090');
else
$('#tl').append(count).css('color', '#F00');
count = count - 1;
}
});
if(计数<1)
{
计数=10;
//setInterval(计时器,1000);<--删除此行
绿色?绿色=假:绿色=真;
}
我意识到@cherniv已经给出了答案,这是原始代码中的一个输入错误,但它想知道为什么它会像你说的那样给出答案
起初它以10987654321的形式运行,下一次它变成1086420,然后是10741
所以,基本上您是在做一些类似于调用函数的函数的事情(几乎类似于递归,但javascript上下文使其有所不同)。函数setInterval(timer,1000)
再次从内部调用
因此,它第一次深入到10级给你
10987654321
下一次当count<1
为真时,setInterval(timer,1000)
已在后台运行的功能几乎立即启动(也就是说),两者之间的时间差非常小(因为它们也开始以相同的方式启动)
因此,这导致计数器
变量减少2,而不是1,相差很小。给你
1086420
以此类推,在接下来的时间间隔中,时间间隔连续减少
希望这有助于理解它为什么会这样做:)您不必调用
setInterval(timer,1000)代码>再次绿色=!绿色
比绿色好?绿色=假:绿色=真
if (count < 1)
{
count = 10;
// setInterval(timer, 1000); < -- remove this line
green ? green=false : green = true;
}