Gor*_*Gor 14 javascript numbers leading-zero
我只想在数字的开头用0-s理解js逻辑.例如
var x = 09.3
// here x == 9.3
// other example
09.3 == 9.3
// returns true
// but check this one
var x = 02.5
// Uncaught SyntaxError: Unexpected number
// or this one
02.5 == 2.5
// same error here
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释,它是如何工作的,为什么在第一个例子中它起作用,并忽略前导零,但在第二个例子中它给了我一个SyntaxError
谢谢
Poi*_*nty 24
龙头0上的数值字面指示一个八进制整数是意图,除非所述第二位数是8或9.在这种情况下,前导0被忽略.
因为八进制数字文字必须是整数,所以02.5是错误的.
此行为在2014年被记录为Firefox中的一个错误,但由于世界上有如此多的JavaScript代码,并且其中很多(可能是无意中)依赖于09.3不是语法错误,因此该错误被标记为"WONTFIX".
正如下面的评论所指出的那样,在"严格"模式下,完全不允许八进制常量.
前导零表示八进制(基数为8)的数字(而不是小数 - 基数为10的数字).
前导0x表示十六进制数,前导0b表示二进制数.
因此09.3默认为十进制,因为数字'9'不存在八进制表示法.
编辑(信用Evan Trimboli,下文):02.5抛出异常,因为八进制文字必须是整数.