2015-10-20 61 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,如果您想使用默認語言環境,那麼最好傳遞'[]' 。 –