2017-05-30 42 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/处获得)