2017-07-28 44 views
1

我有這個測試的代碼片段:.toLocaleString在犀牛引擎

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 

所以,莫非,是犀牛不能執行.toLocaleString()函數?還是我必須做一些額外的工作才能讓它運行?我在谷歌搜索,但沒有找到答案...

+0

你在跑哪個版本的nashorn? – evolutionxbox

+0

我使用版本1.8.0_141 – Chris

回答

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

犀牛1.8.0_121