为什么JavaScript中的032*2 = 52?

Gib*_*boK 2 javascript numbers

我很有兴趣理解为什么在JavaScript中032*2返回52.

我有一种032可以互相渗透的感觉,octal notation但我找不到适当的参考.

能否请您:

  • 给我一个参考解释.

在此先感谢您的帮助.

Tus*_*har 5

以数字开头0八进制.所以,032 === 26.

将其转换为基10/十进制数使用parseInt基数 10.

parseInt('032', 10) * 2; // 64
Run Code Online (Sandbox Code Playgroud)

来自MDN Docs:

如果radix未定义或0(或不存在),则JavaScript假定以下内容:

  1. 如果输入字符串以"0x"或"0X"开头,则基数为16(十六进制),并解析字符串的其余部分.
  2. 如果输入字符串以"0"开头,则基数为八(八进制)或10(十进制). 究竟选择哪个基数是依赖于实现的.ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能.因此,在使用parseInt时始终指定基数.
  3. 如果输入字符串以任何其他值开头,则基数为10(十进制).