此条件如何工作:

    function play(){
    if (typeof gameInterval != "undefined")
        clearInterval(gameInterval);
        gameInterval = setInterval(gameLoop, 100);
        allowPressKeys = true;
}


变量gameInterval仅在此函数内部定义,没有全局变量。
 因此,当play()称为gameInterval时,它是未定义的。由于在未定义gameInterval时此条件会执行某些操作,因此我不明白它为什么起作用。有人可以解释吗?我试图理解这一点,以便稍后在代码中进行操作。

最佳答案

由于您缺少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;
    }
}

关于javascript - 为什么有条件地起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45598967/

10-10 15:54