非法使用休息声明; JavaScript的

leh*_*rmj 34 javascript loops break

当这个变量变成一定量时,我希望循环停止,但我不断收到错误,"Uncaught SyntaxError:Illegal break statement".

function loop() {
    if (isPlaying) {
        jet1.draw();
        drawAllEnemies();
        requestAnimFrame(loop);
        if (game==1) {

            break;

        }

    }
} 
Run Code Online (Sandbox Code Playgroud)

Aru*_*hny 53

break是打破一个循环,比如for,while,switch等你没有这里,你需要return用来打破当前函数的执行流程并返回给调用者.

function loop() {
    if (isPlaying) {
        jet1.draw();
        drawAllEnemies();
        requestAnimFrame(loop);
        if (game == 1) {
           return
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:这不包括if条件背后的逻辑或何时从方法返回,因为我们需要有更多关于drawAllEnemiesrequestAnimFrame方法的上下文以及如何game更新值

  • `requestAnimFrame`很可能只是`requestAnimationFrame`的别名.换句话说:如果你调用`loop`一次,requestAnimFrame将确保对`loop`进行另一次调用,而不管`game`的值.目前的答案是错误的. (2认同)

Bar*_*art 5

您需要确保一旦game == 1,requestAnimFrame就不会再被调用。break语句仅退出传统循环(例如while())。

function loop() {
    if (isPlaying) {
        jet1.draw();
        drawAllEnemies();
        if (game != 1) {
            requestAnimFrame(loop);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您也可以直接跳过第二个if条件,然后将第一个条件更改为if (isPlaying && game !== 1)。您将必须创建一个名为game的变量,并将其值设置为0。每个游戏将其添加1。