2017-05-30 40 views
2

我剛剛更新到節點v8.0,並注意到Number.prototype.toLocaleString()與選項style: 'currency'currency設置爲任何貨幣行爲不同比任何其他環境。在節點v7.2.1和Chrome v58.0中,我的輸出看起來像$5.00,但在節點8中顯示的是不同的貨幣符號和額外的空間,如US$ 5.00。這只是一個更新嗎?我在哪裏可以找到相關文檔? Node是否決定更新toLocaleString,它應該被視爲一個基於環境變化的函數?節點8.0新符號和爲符號Number.prototype.toLocaleString()後添加空格

const value = 5

value.toLocaleString('en-US', { style: 'currency', currency: 'USD' })

節點8.0

'US$ 5.00'

節點< 8.0 +鉻

'$5.00'

+0

我剛剛在節點v 8.0.0和它的所有預期工作... https://image.prntscr.com/image/7de7c2b02cfa4faaaf84daa5da8f98b5.png –

+0

你可以在這裏找到文檔https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString –

+1

看起來我得到的錯誤是沒有提供區域設置,所以'value.toLocaleString(undefined,{style:'currency',currency:'USD'})''。我想默認的語言環境不再是'en-US',因此導致我的問題。謝謝您的幫助 – user7128475

回答

1

它看起來像我得到的錯誤是沒有提供區域設置時,所以value.toLocaleString(undefined, { style: 'currency', currency: 'USD' })。我想默認語言環境不再是en-US,所以這是我的問題。感謝您的幫助

0

是否應該將其視爲基於環境變化的函數?

是的,絕對。從ECMA-402 §13.2.1§11.3.4

的計算依賴於字符串值和數字字符串取決於執行情況和有效的區域內的位置[...]

即使它指出,

建議實現使用通用語言環境數據存儲庫提供的語言環境數據(可在http://cldr.unicode.org/處獲得)