Javascript Intl.NumberFormat问题

时间:2018-04-29 21:11:18

标签: javascript currency

有人可以解释为什么以下代码不起作用,除非我硬编码json?我希望能够交换各种区域设置,货币值。

<html>
<body>
<script>

    currency = 'GBP';
    locale = 'en-GB';

    var json = `{  style: 'currency',  currency: '${currency}', minimumFractionDigits: 0,  maximumFractionDigits: 0 }`;
        console.log(json);
        cf = new Intl.NumberFormat(locale, json);
        document.write(cf.format(1887732.233) + "<br>");

</script>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

问题在于这一部分:

currency: '${currency}'

不是template literal,而只是一个字符串。

你需要这个:

currency: `${currency}`

或只是

currency: currency

或者甚至是Spock先生在评论中提到的short hand property

currency

var currency = 'GBP',
    locale = 'en-GB';
    json = {
        style: 'currency',
        currency,
        minimumFractionDigits: 0,
        maximumFractionDigits: 0
    };

console.log(json);
cf = new Intl.NumberFormat(locale, json);

console.log(cf.format(1887732.233));

答案 1 :(得分:2)

你的代码在没有json的情况下工作得很好:

var config = {  style: 'currency',  currency: currency, minimumFractionDigits: 0,  maximumFractionDigits: 0 };
cf = new Intl.NumberFormat(locale, config);
cf.format(123);