Установка window.variable
- это то же самое, что создание глобальной переменной, другими словами:
function AFunction() {
window.timer = 123;
}
- это то же самое, что и
<script>
var timer = 123;
</script>
(тег сценария добавлен, чтобы показать, что не внутри другой функции)
Таким образом, использование window.timer для двух разных таймеров означает, что вы повторно используете одну и ту же переменную и они конфликтуют друг с другом:
var timer;
timer = setInterval(...
timer = setInterval(...
clearInterval(timer);
clearInterval(timer);
очистит только второй таймер так как первая была потеряна / перезаписана.
Простое решение - использовать две разные переменные:
var timer1, timer2;
timer1 = setInterval(...
timer2 = setInterval(...
clearInterval(timer1);
clearInterval(timer2);
очистит оба таймера.
An альтернативой является использование let
function drawCircle() {
let timer = window.setInterval(function () {
...
if (angle >= max_angle) {
window.clearInterval(timer);
}
, что ограничит переменную с именем timer
внутри drawCircle, поэтому вы повторно используете name «timer» в drawCircle2, и это будет другой переменная.