我在网上找到了一些教程,然后才发现这一点,不知道为什么我的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());
答案 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());