节点8.0新符号和符号后添加空间Number.prototype.toLocaleString()

我只是更新到节点v8.0,并注意到Number.prototype.toLocaleString()与选项style: 'currency' ,也设置为任何货币的货币行为不同于任何其他的环境。 在Node v7.2.1和Chrome v58.0中,我的输出看起来像是$5.00 ,但在节点8中显示的是不同的货币符号,额外的空间是US$ 5.00 。 这只是一个更新? 我在哪里可以find这方面的文件? Node是否决定更新toLocaleString ,它应该被视为一个基于环境变化的函数?

const value = 5

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

节点8.0

'US$ 5.00'

节点<8.0 + Chrome

'$5.00'

它看起来像我得到的错误是当没有提供区域设置,所以value.toLocaleString(undefined, { style: 'currency', currency: 'USD' }) 。 我猜默认语言环境不再是en-US所以这是造成我的问题。 谢谢您的帮助

它应该作为一个function,根据环境的变化?

当然是。 从ECMA-402§13.2.1和§11.3.4 :

计算依赖于string值和依赖于实现和有效区域[…]的数字string中的位置

即使它注意到

build议实现使用通用语言环境数据存储库(可从http://cldr.unicode.org/获&#x53D6; )提供的语言环境数据。