为什么 Intl.NumberFormat 不适用于 Safari 和 Firefox 中的单位?

nep*_*ews 4 javascript safari firefox react-intl

我正在尝试使用此处给出的有关格式化数字的示例。

console.log((16).toLocaleString('en-GB', {
    style: "unit",
    unit: "liter",
    unitDisplay: "long"
}));
Run Code Online (Sandbox Code Playgroud)

我在 chrome 中尝试过,效果很好。但是,在 Safari 和 Firefox 中,我分别收到以下错误Error: style must be either "decimal", "percent", or "currency"Error: invalid value "unit" for option style.

从文档中我认为在查看浏览器兼容性后它应该适用于所有浏览器。我尝试寻找答案,但找不到有关此问题的任何信息。有谁知道这是为什么或者我可以在哪里找到更多信息?

Ort*_*kni 6

这个问题是从价值unit的的style领域。

根据ECMA-402,第 6 版,2019 年 6 月 ECMAScript® 2019 国际化 API 规范

该字段的值必须是一条记录,其中必须包含具有三种数字格式样式名称的字段:“decimal”、“percent”和“currency”。

根据ECMA-402 草案/2020 年 2 月 27 日 ECMAScript® 2020 国际化 API 规范

该字段的值必须是一个 Record,它必须具有具有四种数字格式样式名称的字段: "decimal", "percent", "currency"和 "unit"

Firefox 和 Safari 正在实施 ECMA-402 规范的第 6 版,Chrome 正在实施同一规范的草案版本。规范草案可以随时更改,并且没有正式保证此新unit值将包含在第 7 版中。如果你想跨浏览器兼容和面向未来,你应该坚持使用第 6 版并等待第 7 版的发布,然后再使用这些新功能。

如果您需要详细信息,可以阅读此新功能的建议

  • 感谢您清理它。我认为 MDN 应该在他们的文档中澄清这一点,因为在查看浏览器兼容性部分时,它有点误导。 (5认同)
  • [提案](https://github.com/tc39/proposal-unified-intl-numberformat) 已于 2020 年 3 月 23 日更新,状态为:“该提案已合并到 ECMA-402 中,并计划于2020 版规范。” (2认同)