Javascript 奇怪的八进制行为
据我所知,八进制文字(023形式)在ECMAScript 5中无效,但得到广泛支持。在ECMAScript 6中,新支持的格式为0o23或0o23。让我困惑的是,数字的行为不是有效的八进制数,而是前零(019)。这些似乎表现为正常的十进制数字 如果没有严格模式,我可以得到022===018(true),因为022被解释为八进制,而018可能被视为十进制,因为它不能是八进制 在严格模式下,当使用该格式的有效八进制数时(例如022),我会收到一个错误,但当使用不能成为有效八进制数的零前缀数时(例如018),则不会收到错误 这对我来说似乎很奇怪,就像JS(严格模式)告诉我,我可以在我的数字前面放一个0,只要它是一个无效的八进制。在ES6(或更高版本)中,零前缀数字(可能是八进制或其他)是否无效,或被视为小数?这是一个: 十进制文字可以以零(0)开头,后跟另一个 十进制数字,但如果前导0后的所有数字都小于 8,该数字被解释为八进制数。这不会有什么好处 JavaScript 如果要强制将数字视为八进制,可以使用ES6中引入的新文字形式Javascript 奇怪的八进制行为,javascript,ecmascript-6,ecmascript-5,Javascript,Ecmascript 6,Ecmascript 5,据我所知,八进制文字(023形式)在ECMAScript 5中无效,但得到广泛支持。在ECMAScript 6中,新支持的格式为0o23或0o23。让我困惑的是,数字的行为不是有效的八进制数,而是前零(019)。这些似乎表现为正常的十进制数字 如果没有严格模式,我可以得到022===018(true),因为022被解释为八进制,而018可能被视为十进制,因为它不能是八进制 在严格模式下,当使用该格式的有效八进制数时(例如022),我会收到一个错误,但当使用不能成为有效八进制数的零前缀数时(例如0
0o
(或0o
)