2016-09-28 8 views
-4

Я пытаюсь установить clearInterval на основе состояния. Что с этим не так?Что случилось с моим clearInterval?

function Dog() { 
    var x = 0; 
    var s = setInterval(function y() { 
     console.log(x++); 
     if (x == 0) clearInterval(s); 
    }, 1000); 
    return ''; 
}; 
Dog(); 
+0

Пожалуйста, объясните, какова фактическая проблема. * Что с ним не так? * - Люди не найдут проблемы и не найдут решение. – thefourtheye

+0

'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' – Titus

+0

Это бесконечный цикл –

ответ

0

console.log (x ++); // X будет иметь значение 1 при первом вызове

if (x == 0) clearInterval (s); // Никогда не выполнялся ... До переполнения x

0

x начинается с 0.

В строке одной из ваших функций вы увеличиваете ее. Так будет 1.

На второй строке вы проверяете, является ли это 0. Это не так.

Затем интервал пробегает. 2 не равен 0. 3 не равен 0. И так далее.

Состояние не соблюдается.

0

Ваши й не будет 0 никогда ...

function Dog() { 
    var x = 0; 
    var s = setInterval(function y() { 
    console.log(x++); 
    if (x == 1) clearInterval(s); 
    }, 1000); 
    return ''; 
}; 
Dog(); 

Просто напоминания:

х ++ возвращает фактические е и приращение после

var x = 0; 
console.log(x++); // returns 0 
console.log(x); // returns 1 

++ х : приращение и возврат x

var x = 0; 
console.log(++x); // returns 1 
console.log(x); // returns 1 
Смежные вопросы