正在与我在网上找到的一些教程一起玩,然后我遇到了这一点,不确定为什么我的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