Javascript setInterval回调中未定义的变量

Javascript setInterval回调中未定义的变量,javascript,asynchronous,Javascript,Asynchronous,我正在实现一个简单的倒计时函数,在给定秒数的情况下,倒计时num,num-1,…,0和console.logs“Ring Ring!!!” 当num为0时,使用JavaScript内置的setInterval方法。我的实现的问题是变量num作为未定义的变量打印 我已经看了一个小时了,还没弄清楚。有人能帮忙吗?谢谢 function countDown(num) { var timer = num * 1000; var intervalId = setInterval(funct

我正在实现一个简单的倒计时函数,在给定秒数的情况下,倒计时num,num-1,…,0和
console.log
s“Ring Ring!!!”

num
0
时,使用JavaScript内置的
setInterval
方法。我的实现的问题是变量
num
作为
未定义的
变量打印

我已经看了一个小时了,还没弄清楚。有人能帮忙吗?谢谢

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);
}

从此处删除参数
num

setInterval(function(num));
                     ^
该参数正在对
函数倒计时(num){…}

函数倒计时(num){
变量计时器=num*1000;
var intervalId=setInterval(函数(){
如果(计时器!==0){
log(“计时器:”,num);
num--;
定时器-=1000;
}否则如果(计时器==0){
console.log(“铃声!!!”);
clearInterval(intervalId);
}
}, 1000);
}

倒计时(1)
您在setInterval函数中设置了
num
,只需将其删除即可

函数倒计时(num){
变量计时器=num*1000;
var intervalId=setInterval(函数(){
如果(计时器!==0){
log(“计时器:”,num);
num--;
定时器-=1000;
}否则如果(计时器==0){
console.log(“铃声!!!”);
clearInterval(intervalId);
}
}, 1000);
}

倒计时(20)
无需将
num
作为参数传递给匿名函数

因此,下面的代码应该可以工作:-

函数倒计时(num){
变量计时器=num*1000;
var intervalId=setInterval(函数(){//删除了num参数
如果(计时器!==0){
log(“计时器:”,num);
num--;
定时器-=1000;
}否则如果(计时器==0){
console.log(“铃声!!!”);
clearInterval(intervalId);
}
}, 1000);
}