2014-12-19 2 views
0

У меня есть простая функция JavaScript, которая выглядит следующим образом:Почему этот простой скрипт никогда не заканчивается?

countDown(); 
 

 
function countDown() { 
 

 
    var count = 10; 
 

 
    document.write(count); 
 

 
    if (count > 0) { 
 
    count = count-1;; 
 
    setTimeout(countDown, 1000); 
 
    } 
 

 
}

Почему в переменной count не изменится? Эта функция никогда не заканчивается. , ,

+3

Каждый раз, когда вы вызываете 'countDown', вы пересылаете значение count. Попробуйте помещать 'var count' вне функции, чтобы она была в глобальном масштабе. Счет –

+0

будет сбрасываться до 10 рекурсий. – Mathias

+1

Не используйте 'document.write'. Специально после того, как документ завершил загрузку. См. Предупреждение в [spec] (http://www.w3.org/TR/html5/webappapis.html#document.write%28%29). – Oriol

ответ

6

Поскольку функция countDown() задает значение переменной до десяти при каждом вызове. Небольшое изменение масштаба приведет к тому, что функция будет вести себя так, как вы могли бы предположить.

var count = 10; 

countDown(); 

function countDown() { 

    document.write(count); 

    if (count > 0) { 
    count = count-1;; 
    setTimeout(countDown, 1000); 
    } 

} 
+0

Вы уверены, что OP предназначен для очистки всей страницы? – Oriol

Смежные вопросы