变量counter
由于某种原因没有改变,它保持初始值50,它是一个全局变量,试图在setInterval()调用的函数内部进行更改。 / p>
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,但似乎我不能改变变量的值。可能是什么原因?代码在NodeJS应用程序中运行。
答案 0 :(得分:4)
这些行
if(counter = MIN)
和
else if( counter = MAX )
将计数器设置为MIN或MAX。您希望===
三等于(在这种情况下==
正常)以检查是否相等。
答案 1 :(得分:1)
=用于赋值,==是等式检查(===用于严格检查)。请使用等式检查来修复您的代码。
// Set direction
if(counter == MIN)
{
increment = true;
}
else if(counter == MAX)
{
increment = false;
}
答案 2 :(得分:0)
您在if语句中意外分配了值。试试这个来解决它。
在这部分
var angle = this.toRad(client.rotation); // rotation of the player
var gunStartAngle = angle + Math.PI/4;
var sqrt2 = Math.sqrt(2);
// cell.position is the players position
var pos = new Vec2(
cell.position.x + cell._size * sqrt2 * Math.cos(gunStartAngle),
cell.position.y + cell._size * sqrt2 * Math.sin(gunStartAngle)
);
要解决此问题,您可以使用:
if(counter == MIN)
{
increment = true;
}
else if(counter == MAX)
{
increment = false;
}