无法弄清楚这个 if 语句是错误的还是 clearInterval

Can't figure out whether this if statement is wrong or the clearInterval

正在研究我在网上找到的一些教程,然后我遇到了这个,不知道为什么我的 if 语句不起作用

var myVar;
var myNum;
myNum = 0;

function alertFunc() {
  myNum = myNum + 1;
  console.log("Hello! " + myNum);
}

function myFunction() {

  myVar = setInterval(alertFunc, 1000);

  if (myNum == 3) {
    clearInterval(myVar);
  }
}

console.log(myFunction());

只是因为它没有再次调用 myFunction() 它只检查第一次的 if 条件,即 0

var myVar;
var myNum;
myNum = 3;

function alertFunc() {
  myNum = myNum + 1;
  console.log("Hello! " + myNum);
  console.log(typeof myNum);
}

function myFunction() {

  myVar = setInterval(alertFunc, 1000);

  if (myNum == 3) {
    clearInterval(myVar);
  }
}

console.log(myFunction());

你应该检查条件

if (myNum == 3) {
   clearInterval(myVar);
}

在您的 alertFunc() 中,因为它在每个时间间隔执行。你的 if 的当前位置永远不会是真的,因为它在你设置间隔后只运行一次,myNum 在你初始化它时是 0。

这是您想要的。

var myVar;
var myNum;
myNum = 0;

function alertFunc() {
  if (myNum == 3) {
    clearInterval(myVar);
  } else {
    myNum = myNum + 1;
    console.log("Hello! " + myNum);
  }
}

function myFunction() {
  myVar = setInterval(alertFunc, 1000);
}

console.log(myFunction());

您需要像下面那样在 alertFunc 中调用 clearInterval

function alertFunc() {
   myNum = myNum + 1;
  console.log("Hello! " + myNum);
   if (myNum == 3) {
       clearInterval(myVar);
   }
 }

myFunction 你用 setInterval 调用 alertFunc 所以下面的代码不会执行

我想你想清除间隔。

function myFunction() {

  myVar = setInterval(alertFunc, 1000);

  if (myNum == 3) {  // this if blocktrue will never happen
    clearInterval(myVar);
  }
}

原因:上面的 if 块永远不会发生,因为当 myNum 为 1 时它被调用 一次

所以需要重写interval函数中的check,如下所示

var myVar;
var myNum;
myNum=0;

function alertFunc() {
  myNum=myNum+1;
  console.log("Hello! " + myNum);
  if (myNum==3){ //when myNum is 3 clear the timer interval.
    clearInterval(myVar);
  }

}

function myFunction() {

  myVar = setInterval(alertFunc, 1000);

}


console.log(myFunction());