По какой-то причине counter
переменных не изменяется, он остается своим начальным значением, равным 50. Это глобальная переменная, которая пытается быть изменена внутри функции, называемой 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, однако кажется, что я не могу изменить значение переменной. Что может быть причиной? Код запускается в приложении 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
}