当数字前导为零时,Javascript输出不同

当数字前导为零时,Javascript输出不同,javascript,Javascript,为什么javascript会与下面的代码产生混淆 var a = 10; //will return output 10 var b = 010; //will return output 8 从C(1978)的最早版本开始,前导零被用来表示八进制文字 这已经被继承到C++,java,甚至JavaScript。 一些更勇敢的语言(例如Python 3)正在转向八进制文字的0o,因为现在前导0符号似乎弊大于利。从C(1978)的最早版本开始,前导零被用来表示八进制文字 这已经被继承到C++,ja

为什么javascript会与下面的代码产生混淆

var a = 10; //will return output 10
var b = 010; //will return output 8

从C(1978)的最早版本开始,前导零被用来表示八进制文字

这已经被继承到C++,java,甚至JavaScript。


一些更勇敢的语言(例如Python 3)正在转向八进制文字的
0o
,因为现在前导0符号似乎弊大于利。

从C(1978)的最早版本开始,前导零被用来表示八进制文字

这已经被继承到C++,java,甚至JavaScript。


一些更勇敢的语言(例如Python 3)正转向
0o
来表示八进制文字,因为现在领先的0表示法似乎弊大于利。

如果数字以0开头,Javascript将解释为八进制数字。 千万不要写前导零的数字(比如07)。
一些JavaScript版本将数字解释为八进制,如果数字是以零开头的。

如果数字是以0开头的,JavaScript将解释为八进制数字。 千万不要写前导零的数字(比如07)。
一些JavaScript版本将数字解释为八进制,如果它们是用前导零写入的。

010是一个八进制表示的二进制值8

若你们不了解数字系统,在编程中基本上有4种表示数字的方法

  • 二进制(基2)
  • 八进制(基数8)
  • 十进制(以10为基数)
  • 十六进制(以16为基数)
了解更多有关数字系统的信息

如果您想在JavaScript中表示一个八进制数,可以在任何值的前面加0,如果您想在十六进制中表示一个值,可以通过在任何数字前面加0x来实现

比如说,

var a= 010;    //8 in decimal
var b= 0xF;     //15 in decimal

了解有关JavaScript中数字的更多信息010是一个二进制值8的八进制表示形式

若你们不了解数字系统,在编程中基本上有4种表示数字的方法

  • 二进制(基2)
  • 八进制(基数8)
  • 十进制(以10为基数)
  • 十六进制(以16为基数)
了解更多有关数字系统的信息

如果您想在JavaScript中表示一个八进制数,可以在任何值的前面加0,如果您想在十六进制中表示一个值,可以通过在任何数字前面加0x来实现

比如说,

var a= 010;    //8 in decimal
var b= 0xF;     //15 in decimal

了解有关JavaScript中数字的更多信息问题在于您使用的是松散模式,在大多数环境中,在松散模式下,前导的
0
后跟一个数字表示传统的八进制文字。在八进制中,
010
(也就是说,`10八进制)是数字8。八进制是以8为底的,所以最右边的数字是“一”列,左边的数字是“八”列,左边的数字是“六十四”(8 x 8)列,等等(就像十进制一样,最右边的列是“一”,左边的下一个是“十”,左边的下一个是“百”,等等)

八进制小数 ------ ------- 0 0 1 1 ... 7 7 10 8 11 9 12 10 13 11 14 12 15 13 16 14 17 15 20 16 ... 要解决此问题,请执行以下操作:

  • 使用(
    “使用严格”;
    位于顶部,和/或使用默认严格的模块),以及

  • 不要以
    0
    :-)开头十进制文字


  • 问题是您正在使用松散模式,并且在大多数环境中处于松散模式,前导的
    0
    后跟一个数字表示传统的八进制文字。在八进制中,
    010
    (也就是说,`10八进制)是数字8。八进制是以8为底的,所以最右边的数字是“一”列,左边的数字是“八”列,左边的数字是“六十四”(8 x 8)列,等等(就像十进制一样,最右边的列是“一”,左边的下一个是“十”,左边的下一个是“百”,等等)

    八进制小数 ------ ------- 0 0 1 1 ... 7 7 10 8 11 9 12 10 13 11 14 12 15 13 16 14 17 15 20 16 ... 要解决此问题,请执行以下操作:

  • 使用(
    “使用严格”;
    位于顶部,和/或使用默认严格的模块),以及

  • 不要以
    0
    :-)开头十进制文字


  • 八进制数字010==8谢谢@Polywhirl先生我不明白这里的反对票。就像魔术师的把戏一样,一旦你知道了原因,这是显而易见的,但不是事先。八进制基数010==8谢谢你@Polywhirl先生,我不明白下面的投票。就像魔术师的把戏一样,一旦你知道原因,这是显而易见的,但不是事先。你可以使用基数,
    parseInt(''+010,10)
    强制数字进入基数10,使用基数,
    parseInt('+010,10)