首页 > 解决方案 > 简单函数未正确传递变量

问题描述

我正在尝试实现此功能:

autoFn();

function autoFn(){
  setTimeout(function(){ console.log('another second') }, 1000);
  setTimeout(autoFn, 1000);
}

传入一个变量而不是两次写1000,如下:

autoFn(1000);

function autoFn(n){
  setTimeout(function(){ console.log('another second') }, n);
  setTimeout(autoFn, n);
}

但上述工作不正常。1000 毫秒后,它只运行了大约一百万次。有人可以解释我在这里做错了什么,以及如何解决吗?它应该在 1000 毫秒(1 秒)后再次运行,但再等一秒,直到它在控制台中记录“又一秒”。

这里的任何建议将不胜感激。感谢您在这里的任何帮助。

标签: javascript

解决方案


n在第二个循环中未定义,因为您从未将其传入。您需要提供它。

function autoFn(n){
  setTimeout(function(){ console.log('another second', new Date()) }, n);
  setTimeout(autoFn, n, n);
  // setTimeout(function () {autoFn(n); }, n);
}

autoFn(1000);


推荐阅读