【发布时间】:2017-04-04 15:26:13
【问题描述】:
据我了解,八进制文字(形式为 023)在 ECMAScript 5 中无效,但得到广泛支持。在 ECMAScript 6 中,新支持的格式为 0o23 或 0O23。令我困惑的是数字的行为,这些数字不是有效的八进制数,但前面有一个零(019)。这些似乎表现得像正常的十进制数字。
所以没有严格模式,我可以得到 022 === 018 (true) 之类的东西,因为 022 被解释为八进制,而 018 可能被视为十进制,因为它不能是八进制。
在严格模式下,使用该格式的有效八进制数(例如 022)时出现错误,但使用不能是有效八进制数的零前缀数字(例如 018)时不会出现错误。
这对我来说似乎很奇怪,就像 JS(严格模式)告诉我可以在我的数字前面放一个 0,只要它是一个无效的八进制数。在 ES6(或更高版本)中,以零为前缀的数字(可能是八进制或其他)是无效的,还是被视为小数?
【问题讨论】:
标签: javascript ecmascript-6 ecmascript-5