Javascriptvariables不会改变里面的setInterval()函数?

variablescounter由于某种原因不会改变,它保持其初始值50,它是一个全局variables,试图在由setInterval()调用的函数内部进行更改。

 var mode = false; var counter = 50; var interval = null; var increment = false; var MAX = 50; var MIN = 0; var INTERVAL_MS = 3000; setInterval(doInterval, INTERVAL_MS); function doInterval() { if(increment) { counter += 1; } else { console.log("Decrement, " + counter); counter -= 1; } // Set direction if(counter = MIN) { increment = true; } else if(counter = MAX) { increment = false; } console.log("set to " + counter + " (D) Increment next time? " + increment); // dosomething with the values } 

这个代码的输出

递减50

设为50(D)下次增加? 假

递减50

设为50(D)下次增加? 假

递减50

设为50(D)下次增加? 假

等等

由于它是50,增量是错误的,它应该变成49,48,但是看起来我不能改变variables的值。 什么可能是一个原因? 代码在NodeJS应用程序中运行。

这些线

 if(counter = MIN) 

 else if( counter = MAX ) 

正在设置计数器到MIN或MAX。 你想要=== triple equals( ==在这种情况下罚款)来检查是否相等。

=用于赋值,==是相等检查(===用于严格检查)。 请使用平等检查来修复您的代码。

 // Set direction if(counter == MIN) { increment = true; } else if(counter == MAX) { increment = false; } 

你不小心在你的if语句中赋值。 试试这个来解决它。

在这一部分

  if(counter == MIN) { increment = true; } else if(counter == MAX) { increment = false; } 

要解决它,你可以使用这个:

 var mode = false; var counter = 50; var interval = null; var increment = false; var MAX = 50; var MIN = 0; var INTERVAL_MS = 3000; setInterval(doInterval, INTERVAL_MS); function doInterval() { if(increment) { counter += 1; } else { console.log("Decrement, " + counter); counter -= 1; } // Set direction if(counter == MIN) { increment = true; } else if(counter == MAX) { increment = false; } console.log("set to " + counter + " (D) Increment next time? " + increment); // dosomething with the values }