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 }