1

我知道break,continuereturn函数是内置的。

但我看到http://summerofgoto.com/允许写goto <label>

我们应该写什么才能像这样调用函数?

注意:我得到错误:Missing ; before statement如果我写foo bar;

4

4 回答 4

2

你不能。"Summerofgoto" / "goto.js"使用了一个笨拙的 hack 来启用这个语句:它逐行解析 JS 源代码并使用正则表达式来查找像 "goto xy;" 这样的模式。

基本上,“goto.js”它是 JavaScript 的预处理器,它将您的实际代码(包含标签和 goto)重写为常规 JS - 它将您的标签和 goto 语句替换为函数和函数调用。

不过,你可以做同样的事情。但是,出于性能原因,我强烈建议您不要这样做。

“break”之类的不是函数,它们是核心语言的一部分。那是完全不同的事情。

于 2012-06-29T15:42:20.563 回答
1

goto.js是隐身的。它不是将您的脚本实际作为 Javascript 运行,而是读取文档的<script type="text/jsplusgoto">不是 text/javascript!),然后将标签和 goto 重写为实际的 Javascript。

无论你想做什么,这种技术几乎肯定是矫枉过正。

于 2012-06-29T15:41:40.747 回答
1

这些是语言的关键字,而不是函数。当一个人想用新的关键字扩展一种语言时,通常必须解析包含这些关键字的代码,并且每个新关键字的每次出现都替换为原始语言中可用的函数调用或其他合适的构造。

于 2012-06-29T15:42:08.057 回答
0

我知道break,continuereturn函数是内置的。

break, continue, 和return根本不是函数。通常goto被认为是有害的,并且break,continue和任何return在函数中间的都是 goto。

于 2012-06-29T15:43:48.593 回答