为什么“_”从javascript中的数字中删除?

Raj*_*hra 2 javascript

我尝试在 Chrome 控制台中输入以下代码:

var a = 16_11;
Run Code Online (Sandbox Code Playgroud)

它不在内部"'. 而 的输出a是 1611 而不是 16_11。为什么会_被移除?

控制台输出

Nin*_*olz 8

你有一个数字分隔符,它是 V8 v7.5/Chrome 75 中的提议和实际交付。

此功能使开发人员能够通过在数字组之间创建视觉分隔来使他们的数字文字更具可读性。人眼很难快速解析大的数字文字,尤其是在有很长的数字重复时。这会损害获得正确值/数量级的能力......

1000000000   // Is this a billion? a hundred millions? Ten millions?
101475938.38 // what scale is this? what power of 10?
Run Code Online (Sandbox Code Playgroud)

...但也无法传达一些用例信息,例如使用整数的定点算术。例如,金融计算通常在 4 到 6 位定点算术中工作,但如果没有文字分隔符,即使将金额存储为美分也不是很明显:

const FEE = 12300;
// is this 12,300? Or 123, because it's in cents?

const AMOUNT = 1234500;
// is this 1,234,500? Or cents, hence 12,345? Or financial, 4-fixed 123.45?
Run Code Online (Sandbox Code Playgroud)

使用下划线 (_, U+005F) 作为分隔符有助于提高数字文字的可读性,包括整数和浮点数(在 JS 中,无论如何都是浮点数):

1_000_000_000           // Ah, so a billion
101_475_938.38          // And this is hundreds of millions

let fee = 123_00;       // $123 (12300 cents, apparently)
let fee = 12_300;       // $12,300 (woah, that fee!)
let amount = 12345_00;  // 12,345 (1234500 cents, apparently)
let amount = 123_4500;  // 123.45 (4-fixed financial)
let amount = 1_234_500; // 1,234,500
Run Code Online (Sandbox Code Playgroud)

此外,这也适用于分数和指数部分:

0.000_001 // 1 millionth
1e10_000  // 10^10000 -- granted, far less useful / in-range...
Run Code Online (Sandbox Code Playgroud)

还有一些来源:

1000000000   // Is this a billion? a hundred millions? Ten millions?
101475938.38 // what scale is this? what power of 10?
Run Code Online (Sandbox Code Playgroud)