我有这个测试代码片段:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
Object o = engine.eval("var i = 1000; i.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' });");
System.out.println(o);
当我开始测试时,我得到了这个结果:
1000
那么,Nashorn无法执行.toLocaleString()
功能吗?或者我必须做一些额外的工作才能让它运行?我在谷歌搜索过,但没找到答案......
答案 0 :(得分:2)
查看源代码似乎不支持toLocaleString函数。
当您调用该功能时,Nashorn会重定向jdk.nashorn.internal.objects.NativeNumber.toLocaleString(Object)
上的呼叫。此方法只是在字符串表示形式中转换输入对象(即数字)。这是代码:
public static String toLocaleString(Object self) {
return JSType.toString(getNumberValue(self));
}
这是我刚才看到的版本:
C:... \ java \ bin> jjs -version
nashorn 1.8.0_121