【问题标题】:Converting Javascript 1.7+ to Javascript 1.6将 Javascript 1.7+ 转换为 Javascript 1.6
【发布时间】:2012-11-17 14:19:00
【问题描述】:

是否有任何转换器或技术可用于将具有新语言功能的 Javascript 1.7 代码转换为 Javascript 1.6?

我对迭代器生成器和yield 关键字最感兴趣。我使用的脚本引擎只有 1.6,但迭代器生成器会生成更好的代码。手写似乎很复杂。

我尝试用 C# 编写它,使用 ILSpy 进行反编译,并手动将 that 移植到 Javascript。但这真是一团糟。

我已经搜索过这样的转换器,但我什么也没找到 - 可能是由于在这种情况下搜索词与不相关的结果共享。

【问题讨论】:

  • 我只能考虑将生成器手动重写为 lambda 函数,这样它们的变量就不会污染作用域
  • 1.6?哪个环境使用该引擎?我只知道 Firefox 1.5。
  • @uosɐſ 你怎么知道是 1.6?由于这是 Google 产品,我希望它具有与 Chrome 相同的 JS 引擎。 实际上,整个 JavaScript 版本编号仅针对 Mozilla 的 JS 实现。 除非 Google Apps Script 实现了 Mozilla 的 JS 引擎,否则版本不适用。
  • @uosɐſ 更有可能的是 ES6 到 ES5 代码的编译器,因为 ECMAScript 是真正的 JavaScript 标准,而“JavaScript”只是 Mozilla 对该标准的实现。请注意“JavaScript”如何混淆地具有两个含义:(1) Mozilla 的 ECMAScript 实现,以及 (2) ECMAScript 本身。

标签: javascript generator


【解决方案1】:

我想我已经为您找到了解决方案。查看 Traceur。它是一个 ES6 转译器,即将 ES6 代码(以及所有即将推出的 ES6 代码,如生成器、类、模块、yield)转换为当今 JS 引擎能够解释的 ES5 代码。

在这里查看:https://github.com/google/traceur-compiler/

语言功能页面:https://github.com/google/traceur-compiler/wiki/LanguageFeatures

请注意 Mozilla 添加到 JavaScript 1.7+ 的大部分内容如何在即将发布的 ECMAScript 标准第 6 版中标准化。当前版本是第 5 版,其中已经包含一些内容(例如数组迭代方法、对象可扩展性 API)。

【讨论】:

  • 酷!您能给我们展示一个为迭代器/生成器生成的 ES5 代码示例吗?
  • @Bergi 我从 Traceur“语言功能”页面上的生成器演示中制作了一个 jsFiddle。我不明白演示代码(例如function*yieldyield*),但演示说明了如何使用 Traceur。 1. 将 ES6 代码放入 <script type="text/traceur"> 元素中。 2. 包括traceur.jsbootstrap.js(可在 Traceour 存储库中获得)。 演示在这里: jsfiddle.net/8ebGb/3
  • @Bergi 我在 jsFiddle 上搭建了一个游乐场,用于编写和测试 ES6 代码:jsfiddle.net/8ebGb/5
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多