为什么在产生 SyntaxError 之前带有 0 的十进制数?

Why does a decimal number with a 0 before it produce a SyntaxError?

我正在写一些 Javascript 时不小心输入了 04.5 而不是 40.5。当我 运行 代码时,它产生了一个语法错误 Uncaught SyntaxError: Unexpected number。我在 Chrome、Safari、Firefox 和 NodeJS 中对此进行了测试,它们都产生了相同的错误。我查看了 Javascript specifications,但在上面找不到任何内容。 Javascript 将前面带有 0 的十进制数解释为什么?

04.5 // Uncaught SyntaxError: Unexpected number

这是因为前导零。这很好用:

JSON.parse('[04.5]');

JSON 定义说 整数不能有前导零

编辑删除前导零,以防你有一个以 0 开头的数字数组:

var str = '[04,05,06,07,08,09]';
str = str.replace(/\b0(\d)/g, "");
JSON.parse(str);

带有前导零的它被解释为八进制。但是好像八进制不喜欢小数位。