Heim  >  Artikel  >  Backend-Entwicklung  >  javascript - Eine Zahl wird jede Sekunde um 1 erhöht und ausgedruckt, bis sie 50 erreicht. Wie implementiert man dies mit js?

javascript - Eine Zahl wird jede Sekunde um 1 erhöht und ausgedruckt, bis sie 50 erreicht. Wie implementiert man dies mit js?

WBOY
WBOYOriginal
2016-10-17 09:30:093156Durchsuche

Wie in der Frage: Wie kann das Problem mithilfe der Funktion „closure“ und „setTimeout“ gelöst werden?
PHP-Implementierung ist ebenfalls willkommen

Antwortinhalt:

Wie in der Frage: Wie kann das Problem mithilfe der Funktion „closure“ und „setTimeout“ gelöst werden?
PHP-Implementierung ist ebenfalls willkommen

<code>var count = (function() {
    var timer;
    var i = 0;
    function change(tar) {
        i++;
        console.log(i);
        if (i === tar) {
            clearTimeout(timer);
            return false;
        }
        timer = setTimeout(function() {
            change(tar)
        }, 1000)

    }
    return change;
})()

count(50)</code>

<code>(function(){
    var i=0;
    var end=setInterval(function(){
        if(i>=50){
            clearInterval(end);
        }
        console.log(i);
        i++;
    },1000);
})()</code>

Wenn Sie setTimeout verwenden, ist kein Löschen erforderlich.

<code>void function loop(i) {
    if (i <= 50) {
        console.log(i);
        setTimeout(loop.bind(this, ++i), 1000);
    }
}(1);</code>

Es scheint, dass der Abschluss nicht verwendet wird, also machen wir Folgendes:

<code>void function loop(i) {
    if (i <= 50) {
        console.log(i);
        setTimeout(function() {loop(++i);}, 1000);
    }
}(1);</code>

OK, jetzt gibt es eine Schließung.

Funktion Count(){

<code>    var counter=0;
    function addCount(){
        counter++;
        console.log(counter);
        if(counter==50){
            return false;
        }
        setTimeout(addCount,1000);
    }
    return addCount;
}
var myCount=new Count();
myCount();</code>

<code>var task = function (){
    var val = 0;
    var target = 50;
    
    (function add(){
        val++;
        if(val === target)
            return;
            
        setTimeout(add, 1000);    
    })();
}</code>

Kannst du nicht aufhören?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn