JavaScript 数字分隔符

10

有些编程语言,比如Java和C++,允许您使用数字分隔符。为了提高可读性,您可以每隔三位数进行数字分组:

1_000_000_000

这不仅适用于千位数;您在任何地方都可以使用它。例如,如果您有一些以厘米为单位的值。像这样分离使人们更容易将其读作米:

10_00  // 10 meters

如果我们也能在JavaScript中实现这一点,那不是很棒吗?


2
https://github.com/tc39/proposal-numeric-separator - Bergi
3个回答

17

猜猜看?现在成为一件事了 :-)

并且它适用于任何数字进制:

const decimal = 1_234;
const binary = 0b1000_0101;
const hex = 0x12_34_56_78;

截至2020年5月,它被所有主要浏览器(Chrome、Firefox、Edge、Safari、Opera)支持 (来源1, 来源2)。如果你在服务器端工作,Node.js v12.5.0也已经支持它。噢,还有Electron

有趣的是:尽管所有浏览器都支持该功能,但它尚未成为任何ECMAScript版本的一部分。它仍然是一个第3阶段的提案(尽管当它到达第4阶段时,基本上已经准备好发布了)。很高兴看到浏览器正在迅速赶上新的提案。


我正在尝试将此功能与我的应用程序配合使用,但是出现了“编译失败”的错误。我正在使用ECMA 2018版本。我错过了什么? - Mix Master Mike
2
@MixMasterMike 这不是 ECMAScript 2018 的一部分(甚至不是 2019)。它是一个第三阶段的提案,尚未准备好发布。我编辑了我的答案以添加这个信息。你只能通过使用 v8 和使用它的项目(Chrome、Nodejs、Electron 等)来获得此功能。无论你使用什么平台,都要确保它至少使用 v8 7.5。嗯,看起来 Babel 也支持它(请参见其他答案)。 - Lucio Paiva
啊,明白了。谢谢你的澄清! - Mix Master Mike

1
这听起来很有趣。我发现这在最新版的Chrome上可以工作。 Babel也支持在stage-0中使用它。然后,您可以使用Babel将其转译为ECMAScript 2015(ES6)。
Babel上试一下。

0

在某些情况下,常量更易于阅读:

const G = 1**9;
const M = 1**6;
const k = 1**3;
const cm = 0.01;

var size = 5 * G;
var count = 10 * k;
var length = 100 * cm;

1
我喜欢这个,但应该是10的幂次方,而不是1: const M = 10**6; - user1559679

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接