javascript - 简单函数未正确传递变量
问题描述
我正在尝试实现此功能:
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 秒)后再次运行,但再等一秒,直到它在控制台中记录“又一秒”。
这里的任何建议将不胜感激。感谢您在这里的任何帮助。
解决方案
n
在第二个循环中未定义,因为您从未将其传入。您需要提供它。
function autoFn(n){
setTimeout(function(){ console.log('another second', new Date()) }, n);
setTimeout(autoFn, n, n);
// setTimeout(function () {autoFn(n); }, n);
}
autoFn(1000);
推荐阅读
- postgresql - 如何将数据从heroku迁移到不同的vps?
- jquery - 如何在创建页面导轨中显示未保存的图像
- r - 在 ggplot2 中为几何条指定颜色
- kdb - 对嵌套列表的每个元素应用操作
- ruby-on-rails - 从工作人员内部重试 Sidekiq 工作人员
- jenkins - 从 .war 文件启动 Jenkins
- python - 使用属性时正确处理 __getattr__ 中的 AttributeError
- r - 在满足R中的条件后如何更改向量中的一定数量的值?
- pandas - 对所有结果进行分组而不采取任何措施
- postgresql - Grails 3.3.x 似乎不支持 PostgreSQL 的每租户模式