Ingernirated
@Ingernirated
Романыч

JS, как остановить функцию?

var z = 0;
function escape() {

var y = function() {
var x = Math.floor((Math.random() * 10) + 1);
console.log(x);
return x;
}

z += y();

if (z >= 100) {
clearTimeout(sI);
z = 100;
}
console.log( z);
var sI = setTimeout(escape, 1000);
}
escape();

Как остановить y()?
Что бы после окончания работы функции escape() он перестал выполняться.
И вообще, почему он сам вызывается, даже когда функция escape уже остановлена?
Такое решение задачи, когда нам нужны случайные цифры актуально реализовывать таким способом или есть лучше?
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
Продолжает вызываться потому что вы ее сами вызываете через
setTimeout(escape, 1000);

проще всего случайную цифру получить через
var z = Math.floor((Math.random() * 10));
тут будет 0-9
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
как же никто не любит теорию почитать. Объявление переменной внутри функции приводит к тому, что как минимум в момент вызова клеарТаймаут ваш ключ неопределен, а следовательно даже, если бы был сеттаймаут вызван в else , эта операция не имелы бы никакого смысла. Хотя и решить проблему вашего кода это бы помогло.
читайте теорию.....

оцените подвох своего кода:
2
2
5
7
6
13
3
16
1
17
3
20
6
26
9
35
7
42
1
43
6
49
1
50
5
55
5
60
3
63
1
64
6
70
9
79
9
88
4
92
8
sI: undefined
100
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы