为什么0154 === 108?

Sha*_*haz 13 html javascript

这里发生什么,为什么?

document.write(0154); // === 108
Run Code Online (Sandbox Code Playgroud)

typ*_*.pl 26

以0开头的数字被认为是八进制(基数为8)的数字.

碱基8 =碱基10 [108]

但是如果你使用了一个8或9的数字,你就不会看到这个问题,因为8和9都不是八进制数字.

  • 发明这种行为的人应远离任何计算机. (4认同)
  • @pst:因为Javascript中该行为的唯一*实际*效果导致编程错误. (4认同)
  • 它被广泛接受,因为有人在1872年的一个醉酒的星期天下午发明了它,现在没有人记得,但在很多情况下,领先的零被忽略了.一个0o前缀或某些内容会更有意义,因为你可以立即看到有关该数字的特殊内容,即使你仍然需要查找"o"代表什么. (4认同)

awm*_*awm 12

0154是八进制.1*64 + 5*8 + 4 = 108.