Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
非法使用中断语句;javascript_Javascript_Loops_Break - Fatal编程技术网

非法使用中断语句;javascript

非法使用中断语句;javascript,javascript,loops,break,Javascript,Loops,Break,当这个变量变为一定数量时,我希望循环停止,但我不断得到错误,“uncaughtsyntaxerror:非法中断语句” 如果要中断for、while、switch等循环,则需要使用return中断当前函数的执行流并返回调用方 function loop() { if (isPlaying) { jet1.draw(); drawAllEnemies(); requestAnimFrame(loop); if (game ==

当这个变量变为一定数量时,我希望循环停止,但我不断得到错误,“uncaughtsyntaxerror:非法中断语句”

如果要中断for、while、switch等循环,则需要使用
return
中断当前函数的执行流并返回调用方

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

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

您需要确保在game==1时停止调用requestAnimFrame。break语句仅退出传统循环(例如
while()


或者,您也可以跳过第二个
if
条件,将第一个条件更改为
if(isPlaying&game!==1)
。您必须创建一个名为game的变量,并将其值设为0。每场比赛增加1个。

我有一个函数
next()
,它可能会激励你

函数队列(目标){
var array=array.prototype;
var排队=[];
target.queue=队列;
target.queued=已排队;
回报目标;
排队函数(操作){
返回函数(){
var self=这个;
var args=参数;
队列(函数(下一个){
action.apply(self,array.concat.apply(next,args));
});
};
}
函数队列(操作){
如果(!操作){
返回;
}
排队推送(动作);
if(queueing.length==1){
next();
}
}
函数next(){
排队[0](函数(错误){
如果(错误){
犯错误;
}
排队=排队.slice(1);
if(队列长度){
next();
}
});
}
}

break
用于断开循环。在您的代码中没有循环。@Hogan这是一个自调度函数First if语句:
if(isPlaying&game!=1)
噢,duhh。。。我对这一切都不熟悉,但非常感谢你的帮助!实际上根本不会退出循环。无论
game
的值如何,都将调用requestAnimFrame,从而导致
loop
永远运行。这将取决于
requestAnimFrame
的实现方式以及调用回调
loop
的方式。。。如果存在对回调的条件调用,则它将退出
requestAnimFrame
很可能只是
requestAnimationFrame
的别名。换句话说:如果您调用了一次
循环
,requestAnimFrame将确保再次调用
循环
,而不管
游戏
的值如何。目前的答案是错误的。
function loop() {
    if (isPlaying) {
        jet1.draw();
        drawAllEnemies();
        requestAnimFrame(loop);
        if (game == 1) {
           return
        }
    }
}
function loop() {
    if (isPlaying) {
        jet1.draw();
        drawAllEnemies();
        if (game != 1) {
            requestAnimFrame(loop);
        }
    }
}