无法弄清楚这个if语句是错误的还是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());

我想你想清除间隔。

function myFunction() {
  myVar = setInterval(alertFunc, 1000);
  if (myNum == 3) {  // this if blocktrue will never happen
    clearInterval(myVar);
  }
}

原因:上面的如果块true永远不会发生,那么它将被称为一次当mynum为1时。

因此,您需要在下面写的间隔函数中重写检查。

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

仅仅因为它没有再次调用myFunction(),它只会检查第一次

的if条件

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()中,由于每个间隔都执行。您的当前位置将永远不会是正确的,因为它设置了间隔后仅运行一次,当您初始化它时, 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,例如Bellow

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

myFunction使用setInterval调用alertFunc,因此代码不执行Bellow

最新更新