我有一些绝对必须使用实现的代码goto。例如,我要编写这样的程序:
goto
start: alert("RINSE"); alert("LATHER"); repeat: goto start
有没有办法用Javascript做到这一点?
绝对!有一个名为Summer of Goto的项目,它使您可以最大程度地使用JavaScript,并将彻底改变您编写代码的方式。
这个JavaScript预处理工具可让您创建标签,然后使用以下语法转到标签:
[lbl] <label-name> goto <label-name>
例如,问题中的示例可以编写如下:
[lbl] start: alert("LATHER"); alert("RINSE"); [lbl] repeat: goto start;
请注意,您不仅限于无穷无尽的LATHER``RINSE重复循环这样的简单程序,它所提供的可能性goto是无限的,您甚至可以Hello,world!向JavaScript控制台发送一条消息538次,如下所示:
LATHER``RINSE
Hello,world!
var i = 0; [lbl] start: console.log("Hello, world!"); i++; if(i < 538) goto start;
您可以阅读有关goto的实现方式的更多信息,但基本上,它会执行一些JavaScript预处理,这利用了您可以使用带标签的whileloop模拟goto的事实。因此,当您撰写“你好,世界!” 上面的程序,它被翻译成这样的东西:
while
var i = 0; start: while(true) { console.log("Hello, world!"); i++; if(i < 538) continue start; break; }
此预处理过程存在一些限制,因为while循环无法跨越多个功能或块。不过,这没什么大不了的- 我相信能够利用gotoJavaScript的好处绝对会让您不知所措。
PS对于任何想知道的人(到目前为止共有零个人),SummerofGoto是PaulIrish推广的一个术语,同时讨论了该脚本以及PHP决定将goto添加到他们的语言中的决定。
对于那些没有立即意识到整件事是在开玩笑的人,请原谅我。<—(保险)。