无法确定此if语句是否错误或clearInterval

时间:2019-03-19 04:47:08

标签: javascript if-statement 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());

4 个答案:

答案 0 :(得分:0)

只是因为它不再再次调用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());

答案 1 :(得分:0)

您应该检查条件

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

答案 2 :(得分:0)

您需要像下面这样在clearInterval中呼叫alertFunc

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

myFunction中,您正在使用alertFunc调用setInterval,因此下面的代码不会执行

答案 3 :(得分:0)

我认为您想清除间隔。

function myFunction() {

  myVar = setInterval(alertFunc, 1000);

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

原因:上面的if块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());