这是否有条件的工作:
function play(){
if (typeof gameInterval != "undefined")
clearInterval(gameInterval);
gameInterval = setInterval(gameLoop, 100);
allowPressKeys = true;
}
变量gameInterval仅在此函数内定义,没有全局变量。 因此,当调用play()时,gameInterval是未定义的。由于这个条件在gameInterval未定义时会有所作为,我不明白为什么它有效。谁能解释一下?我试图理解这一点,以便我可以在我的代码中稍后操作它。
答案 0 :(得分:3)
由于缺少if块周围的花括号,因此只有条件执行if之后的第一个语句。你的缩进混淆了这个问题。你真的是这样做的:
function play() {
if (typeof gameInterval != "undefined")
clearInterval(gameInterval);
gameInterval = setInterval(gameLoop, 100);
allowPressKeys = true;
}
声明:
gameInterval = setInterval(gameLoop, 100);
总是执行;
你可能的意思是:
function play() {
if (typeof gameInterval != "undefined") {
clearInterval(gameInterval);
gameInterval = setInterval(gameLoop, 100);
allowPressKeys = true;
}
}
答案 1 :(得分:1)
满足条件时唯一发生的事情是:
clearInterval(gameInterval);
接下来的两行:
gameInterval = setInterval(gameLoop, 100);
allowPressKeys = true;
总是被执行。
像这样格式化代码可以更容易理解:
function play(){
if (typeof gameInterval != "undefined") {
clearInterval(gameInterval);
}
gameInterval = setInterval(gameLoop, 100);
allowPressKeys = true;
}
答案 2 :(得分:0)
我假设您要将此与未定义的值进行比较? gameInterval !== undefined
(没有引号)可能就是你要找的东西。
答案 3 :(得分:0)
你没有在任何地方声明变量,因此它在全局范围内声明,因此typeof!=“undefined”
id = models.AutoField(primary_key=True)
总是被调用,因为它超出了if范围,这就是它正常工作的方式
gameInterval = setInterval(gameLoop, 100);
也尝试运行此
if(typeof a =="undefined"){
var a=5;
console.log('OK');
}