[英]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.