在经典JavaScript中,您需要使用do-while循环来实现这种类型的代码。我想您可能正在为其他事情生成代码。像将字节码后端备份到JavaScript一样,这样做的方法是将每个标签目标包装在“标签化”的do-while中。LABEL1: do { x = x + 2; ... // JUMP TO THE END OF THE DO-WHILE - A FORWARDS GOTO if (x < 100) break LABEL1; // JUMP TO THE START OF THE DO WHILE - A BACKWARDS GOTO... if (x < 100) continue LABEL1;} while(0);这样使用的每个带标签的do-while循环实际上都会为一个标签创建两个标签点。一个在循环的顶部,另一个在循环的末尾。跳回使用继续,向前跳使用中断。// NORMAL CODEMYLOOP: DoStuff(); x = x + 1; if (x > 100) goto DONE_LOOP; GOTO MYLOOP;// JAVASCRIPT STYLEMYLOOP: do { DoStuff(); x = x + 1; if (x > 100) break MYLOOP; continue MYLOOP;// Not necessary since you can just put do {} while (1) but it illustrates} while (0)不幸的是,没有其他方法可以做到这一点。普通示例代码:while (x < 10 && Ok) { z = 0; while (z < 10) { if (!DoStuff()) { Ok = FALSE; break; } z++; } x++;} 假设代码已编码为字节码,那么现在您必须将字节码放入JavaScript中,以出于某些目的模拟后端。JavaScript样式:LOOP1: do { if (x >= 10) break LOOP1; if (!Ok) break LOOP1; z = 0; LOOP2: do { if (z >= 10) break LOOP2; if (!DoStuff()) { Ok = FALSE; break LOOP2; } z++; } while (1);// Note While (1) I can just skip saying continue LOOP2! x++; continue LOOP1;// Again can skip this line and just say do {} while (1)} while(0)因此,使用此技术仅出于简单目的即可完成工作。除此之外,您无能为力。对于普通的Javacript,您永远不需要使用goto,因此除非您明确翻译了其他样式代码以在JavaScript上运行,否则您应该在这里避免使用此技术。例如,我假设这就是他们如何使Linux内核在JavaScript中启动。注意!这都是天真的解释。对于正确的字节码Js后端,还应考虑在输出代码之前检查循环。可以这样检测到许多简单的while循环,然后您可以使用循环而不是goto。