[英]undefined variable within a setInterval callback
我正在实现一个简单的 countDown 函数,给定一个以秒为单位的 num,倒计时 num、num-1、...、0 和console.log
s “Ring Ring Ring!!!” .
当num
为0
使用 JavaScript 内置的setInterval
方法。 我的实现的问题是变量num
打印为undefined
变量。
我已经看了一个小时了,无法理清它。 有人可以帮忙吗? 谢谢!
function countDown(num) {
var timer = num * 1000;
var intervalId = setInterval(function(num) {
if (timer !== 0) {
console.log("Timer: ", num);
num--;
timer -= 1000;
} else if (timer == 0) {
console.log("Ring Ring Ring!!!");
clearInterval(intervalId);
}
}, 1000);
}
你在 setInterval 函数中有num
只需删除它
function countDown(num) { var timer = num*1000; var intervalId = setInterval(function(){ if(timer !== 0){ console.log("Timer: ", num); num--; timer -= 1000; } else if(timer == 0){ console.log("Ring Ring Ring!!!"); clearInterval(intervalId); } }, 1000); } countDown(20);
从这里删除参数num
:
setInterval(function(num));
^
该参数隐藏了function countDown(num) {...}
的外部参数
function countDown(num) { var timer = num * 1000; var intervalId = setInterval(function() { if (timer !== 0) { console.log("Timer: ", num); num--; timer -= 1000; } else if (timer == 0) { console.log("Ring Ring Ring!!!"); clearInterval(intervalId); } }, 1000); } countDown(1);
您无需将num
作为参数传递给匿名函数
所以下面的代码应该工作: -
function countDown(num) {
var timer = num*1000;
var intervalId = setInterval(function(){ //removed num argument
if(timer !== 0){
console.log("Timer: ", num);
num--;
timer -= 1000;
} else if(timer == 0){
console.log("Ring Ring Ring!!!");
clearInterval(intervalId);
}
}, 1000);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.