2015-10-20 64 views
2

格式在JavaScript中执行货币的基于地区的格式,你货币Clojurescript

(550.753).toLocaleString(undefined, {style: 'currency', currency: 'USD'}) 
// # $550.75 in en-US 

你怎么做相同的Clojurescript?

我已经试过

(.toLocaleString 550.753 nil {:style "currency" :currency "USD"}) 

无济于事。

回答

3

运行您的JS示例,我得到Uncaught TypeError: Cannot convert undefined or null to object(…),因为您将null作为区域设置传递。 ClojureScript也发生了同样的错误。 toLocaleString要求您传递一个语言环境。

修复此提供de-DE区域:

的JavaScript:

(550.753).toLocaleString('de-DE', {style: 'currency', currency: 'EUR'}) 
// "550,75 €" 

ClojureScript:

(.toLocaleString 550.753 "de-DE" #js {:style "currency" :currency "USD"}) 
;; "550,75 $" 

#js用于将ClojureScript地图转换为JavaScript对象。

如果您想要使用默认区域设置,请传递#js []js/undefined

+0

谢谢你的回答。我想知道是否有一种方法可以为语言环境提供未定义的值。在我写的其他JS(针对Firefox)中,旨在作为区域设置不可知的,指定未定义的区域意味着使用浏览器区域设置。这在Clojurescript中可能吗? – wegry

+1

'(.toLocaleString 550.753 js/undefined #js {:style“currency”:currency“USD”})'是我正在寻找的东西。 – wegry

+1

查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument,如果您想使用默认语言环境,那么最好传递'[]' 。 –