我正在实现一个简单的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);
从这里删除param 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);
}