Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 奇怪的八进制行为_Javascript_Ecmascript 6_Ecmascript 5 - Fatal编程技术网

Javascript 奇怪的八进制行为

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

据我所知,八进制文字(023形式)在ECMAScript 5中无效,但得到广泛支持。在ECMAScript 6中,新支持的格式为0o23或0o23。让我困惑的是,数字的行为不是有效的八进制数,而是前零(019)。这些似乎表现为正常的十进制数字

如果没有严格模式,我可以得到022===018(true),因为022被解释为八进制,而018可能被视为十进制,因为它不能是八进制

在严格模式下,当使用该格式的有效八进制数时(例如022),我会收到一个错误,但当使用不能成为有效八进制数的零前缀数时(例如018),则不会收到错误

这对我来说似乎很奇怪,就像JS(严格模式)告诉我,我可以在我的数字前面放一个0,只要它是一个无效的八进制。在ES6(或更高版本)中,零前缀数字(可能是八进制或其他)是否无效,或被视为小数?

这是一个:

十进制文字可以以零(0)开头,后跟另一个 十进制数字,但如果前导0后的所有数字都小于 8,该数字被解释为八进制数。这不会有什么好处 JavaScript

如果要强制将数字视为八进制,可以使用ES6中引入的新文字形式
0o
(或
0o