节点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/获取 )提供的语言环境数据。 ”