Проблема с плюсованием, я даже не знаю как это объяснить
В коде четко и ясно указано, что функция Plus выполняется каждую секунду, добавляя 1 к переменной Test. В моем случае функция выполняется огромное количество раз в секунду, что приводит к зависанию страницы, в чем может быть проблема? Помогите!!!
Первый раз сталкиваюсь с подобным, до этого много работал с таймером setInterval и т.д.
<script>
Test = 0;
function Plus(){
Test++;
console.log("Test = " + Test);
setInterval(Plus, 1000);
}
Plus();
</script>
Ответы (2 шт):
setInterval запускает повторяющийся таймер, который будет сам запускаться через равные интервалы.
Внутри Plus запускается setInterval, который каждый раз запускает Plus, в котором запускается новый setInterval. Таким образом количество запущенных интервалов постоянно увеличивается.
Для решения нужно либо запускать Plus отдельно в интервале
Test = 0;
function Plus(){
Test++;
console.log("Test = " + Test);
}
Plus();
setInterval(Plus, 1000);
Либо использовать setTimeout, который запускается только один раз:
Test = 0;
function Plus(){
Test++;
console.log("Test = " + Test);
setTimeout(Plus, 1000);
}
Plus();
а зачем вы сначала вызываете plus, а потом еще раз в setInterval? Так ведь тоже работает:
Test = 0;
function Plus(){
Test++;
console.log("Test = " + Test);
}
setInterval(Plus, 1000);