发电机和“产量”在浏览器之外

发布于 2024-12-13 06:48:04 字数 931 浏览 1 评论 0原文

此代码片段位于此处,在一篇描述 JavaScript 中的生成器和迭代器的 MDN 文章中。

function simpleGenerator(){  
  yield "first";  
  yield "second";  
  yield "third";  
  for (var i = 0; i < 3; i++)  
    yield i;  
}  

var g = simpleGenerator();  
print(g.next()); // prints "first"  
print(g.next()); // prints "second"  
print(g.next()); // prints "third"  
print(g.next()); // prints 0  
print(g.next()); // prints 1  
print(g.next()); // prints 2  
print(g.next()); // StopIteration is thrown  

在上面我们读到:

yield 关键字仅适用于封装在 HTML 中的代码块

<script type="application/javascript;version=1.7">

阻止(或更高版本)。

事实上,当嵌入 HTML 文件并包含在上述标记中时,该代码片段可以正常工作。问题是,我在 Rhino 中尝试过,它似乎无法在 HTML 和浏览器之外工作。

那么如何在浏览器之外使用生成器呢?

This is snippet is found here, in an MDN article describing generators and iterators in JavaScript.

function simpleGenerator(){  
  yield "first";  
  yield "second";  
  yield "third";  
  for (var i = 0; i < 3; i++)  
    yield i;  
}  

var g = simpleGenerator();  
print(g.next()); // prints "first"  
print(g.next()); // prints "second"  
print(g.next()); // prints "third"  
print(g.next()); // prints 0  
print(g.next()); // prints 1  
print(g.next()); // prints 2  
print(g.next()); // StopIteration is thrown  

Above that we read:

The yield keyword is only available to code blocks in HTML wrapped in a

<script type="application/javascript;version=1.7">

block (or higher version).

Indeed, the snippet works fine when embedded in an HTML file and included in the aforementioned tag. The problem is, I tried it in Rhino and it doesn't seem to work outside HTML and the browser.

So how can I use generators outside the browser?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事未完 2024-12-20 06:48:04

https://developer.mozilla.org/en/New_in_Rhino_1.7R1#JavaScript_1.7_features

要启用 JavaScript 1.7 支持,您必须使用 Context.setLanguageVersion() API 调用将版本设置为 170。如果您使用的是 Rhino shell,则可以在命令行上指定 -version 170 或在 shell 执行的代码中调用 version(170)

https://developer.mozilla.org/en/New_in_Rhino_1.7R1#JavaScript_1.7_features

To enable JavaScript 1.7 support, you must set the version as 170 using the Context.setLanguageVersion() API call. If you are using the Rhino shell, you can specify -version 170 on the command line or call version(170) in code executed by the shell.

美人迟暮 2024-12-20 06:48:04

要更改上下文:

            Context ctx = Context.enter();
            ctx.setLanguageVersion(Context.VERSION_1_7);
            try {

             CompilerEnvirons compEnv = new CompilerEnvirons();
             compEnv.initFromContext(ctx);

             ...

            }
            finally { Context.exit(); }

To change context:

            Context ctx = Context.enter();
            ctx.setLanguageVersion(Context.VERSION_1_7);
            try {

             CompilerEnvirons compEnv = new CompilerEnvirons();
             compEnv.initFromContext(ctx);

             ...

            }
            finally { Context.exit(); }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文