我刚刚尝试了Nashorn,似乎不支持
Array.prototype.fill
。 这令人惊讶吗? Nashorn 的预期支持是否有时间表? 目前在 Nashorn 中获取 5 个 0 数组的最佳方法是 Array.apply(null, Array(5)).map(x=>0)
?
这个文档让我相信即使在 Java 8 中你也可以通过使用
-Dnashorn.args=--language=es6
: 来获得 ES6
https://developer.oracle.com/databases/nashorn-javascript-part2
事实上,我设法从 Clojure 获得了一些基本的 ES6 支持(将
:jvm-opts ["-Dnashorn.args=--language=es6"]
添加到 project.clj
),尽管我仍然无法加载我想要的库,所以可能确实还缺少一些部分。
Java9 似乎部分支持 ES6,稍后还会提供更多支持: https://www.oracle.com/corporate/features/nashorn-javascript-engine-jdk9.html
如前所述,一些功能已经实现。 我在任何答案中都没有找到如何在运行时激活它。
目前,使用独立版本(Nashorn 在 JRE 15 中被删除),您可以通过以下方式启用 ES6(部分):
System.setProperty("nashorn.args","--language=es6");
使用前请确保属性已设置。我建议将下面的代码添加到包含 main 或另一个初始化点的类中。
static {
System.setProperty("nashorn.args","--language=es6");
}
获取有关独立版本的更多信息:https://github.com/openjdk/nashorn