有人可以解释为什么以下代码不起作用,除非我硬编码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>
答案 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);