当前位置:Gxlcms > PHP教程 > javascript-一个数每隔一秒执行加1并打印出来,一直加到50停止,用js如何实现?

javascript-一个数每隔一秒执行加1并打印出来,一直加到50停止,用js如何实现?

时间:2021-07-01 10:21:17 帮助过:89人阅读

如题,用到闭包,和setTimeout函数怎么解决?
也欢迎php的实现

回复内容:

如题,用到闭包,和setTimeout函数怎么解决?
也欢迎php的实现

  1. <code>var count = (function() {
  2. var timer;
  3. var i = 0;
  4. function change(tar) {
  5. i++;
  6. console.log(i);
  7. if (i === tar) {
  8. clearTimeout(timer);
  9. return false;
  10. }
  11. timer = setTimeout(function() {
  12. change(tar)
  13. }, 1000)
  14. }
  15. return change;
  16. })()
  17. count(50)</code>

  1. <code>(function(){
  2. var i=0;
  3. var end=setInterval(function(){
  4. if(i>=50){
  5. clearInterval(end);
  6. }
  7. console.log(i);
  8. i++;
  9. },1000);
  10. })()</code>

setTimeout的话,就不需要clear了。

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

好像没用到闭包,那么这样吧:

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

OK,这样就有闭包了。

function Count(){

  1. <code> var counter=0;
  2. function addCount(){
  3. counter++;
  4. console.log(counter);
  5. if(counter==50){
  6. return false;
  7. }
  8. setTimeout(addCount,1000);
  9. }
  10. return addCount;
  11. }
  12. var myCount=new Count();
  13. myCount();</code>

  1. <code>var task = function (){
  2. var val = 0;
  3. var target = 50;
  4. (function add(){
  5. val++;
  6. if(val === target)
  7. return;
  8. setTimeout(add, 1000);
  9. })();
  10. }</code>

你这个停不下来吧

人气教程排行