【发布时间】:2015-08-02 20:04:09
【问题描述】:
这很奇怪。这就是在 Chrome(版本 42.0.2311.135,64 位)中的 JavaScript 控制台发生的情况。
> 0
< 0
> 00
< 0
> 0.0
< 0
> 00.0
X Uncaught > SyntaxError: Unexpected number
Firefox 37.0.2 做同样的事情,虽然它的错误信息是:
SyntaxError: missing ; before statement
关于 JavaScript 解析数字的方式可能有一些技术解释,也许它只能在修改控制台提示符时发生,但它似乎仍然是错误的。
为什么要这样做?
【问题讨论】:
-
在这里,我想我已经看过该语言的所有WTF了...而且我总是喜欢 ????片刻之后。
-
这不是只在控制台出现的问题,
var i = 00.0;总是会抛出 SytaxError。 -
AFAIK 中的 JS 浮点字面量应该包含 decimal 整数。前导零表示 八进制 整数 (ref.)
-
好点,@pstenstrm。我想问题是在解析源代码(包括在控制台输入的内容)时,Javascript 对什么是有效的和无效的有严格的规定;而在处理字符串(这是 user 输入到达的形式)时,它会更加努力地获得结果。所以
Number("00.0")有效,而Number(00.0)无效。 -
@ChrisDennis 正确,问题在于根据语法解析源代码。
Number()函数使用的规则与解析器使用的规则不同(参见ToNumber Applied to the String Type)。
标签: javascript numbers syntax-error