【问题标题】:why alert(0123) is giving answer 83 ? how it works in this sense? [duplicate]为什么 alert(0123) 给出答案 83 ?在这个意义上它是如何工作的? [复制]
【发布时间】:2017-01-28 02:09:23
【问题描述】:

我知道 JavaScript。但我想知道为什么它给出了 83 个答案?它是如何工作的? alert() 方法显示一个带有指定消息和 OK 按钮的警告框。

如果您想确保信息能够传递给用户,通常会使用警告框。

但我找不到这个答案的逻辑?感谢您的帮助

【问题讨论】:

  • 原因 #364 总是使用严格模式。

标签: javascript


【解决方案1】:

因为如果您以0 开头,它是一个八进制数字系统。

如果以0x 开头,则为十六进制系统。

如果您希望将值转换为number,则parseInt 方法接受第二个参数作为基数(数学数字系统中的基数)

parseInt( "0123", 8 );  => 83
parseInt( "0123", 10 );  => 123
parseInt( "0123", 16 );  => 291

更多来自MDN

整数可以用十进制(以 10 为底)、十六进制表示 (以 16 为底)、八进制(以 8 为底)和二进制(以 2 为底)。

十进制整数文字由一系列数字组成,没有 前导 0(零)。

整数文字前导 0(零)或前导 0o(或 0O)表示它是八进制的。八进制整数只能包含 数字 0-7。

前导 0x(或 0X)表示十六进制。十六进制 整数可以包含数字 (0-9) 以及字母 a-f 和 A​​-F。

前导 0b(或 0B)表示二进制。二进制整数只能包含数字 0 和 1.

【讨论】:

  • 您的意思是从0 开始,而不是o。如果它以o 开头,JS 将尝试解析引用。
  • 是的,我就是这个意思。谢谢戴夫。
【解决方案2】:

如果你在数字前面加上 0,JavaScript 会将其视为八进制数,即以 8 为底的数字。

如果您想显示一个常规数字,省略前导零是一个很好的 JavaScript 做法。

访问此网站以了解有关Octal System的更多信息

https://en.wikipedia.org/wiki/Octal

【讨论】:

  • 告诉我我是否正确。它会将八进制数转换为十进制数以显示警报消息吗?
  • 我不确定。但是数字前面的 0 表示八进制
  • @ShHuzaifa:JS 中没有八进制数和十进制数。它们都只是数字,当你认真对待它时,它们是二进制的,所以不会发生数字转换。您将创建数据的语法与数据本身混为一谈。您可以使用.toString(8) 获得备用显示字符串,其中8 是您要用于显示的任何基础。默认值为10,这解释了为什么alert() 显示该格式。
  • 这是有道理的。默认基数是 10,这就是为什么它显示以 10 为基数的数字。
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多