【问题标题】:Why does using parseInt on Error return 14?为什么使用 parseInt on Error 返回 14?
【发布时间】:2016-02-08 16:11:48
【问题描述】:

考虑以下几点:

parseInt(new Array(), 10); // -> NaN
parseInt(new Array(), 16); // -> NaN

parseInt(new Error(), 10); // -> NaN
parseInt(new Error(), 16); // -> 14

似乎这种行为是错误/错误实例所独有的。谁能提供见解?

【问题讨论】:

  • 首先,为什么在出错时使用 parseInt?
  • parseInt(["E"], 16) 也可以。
  • 类似地,parseInt(false, 16) 产生 250(十六进制 FA)。

标签: javascript parseint


【解决方案1】:

基本上,这是因为:

  • new Error().toString() 产生 "Error",并且
  • parseInt("Error", 16) 产生 14(因为 0xE14 并且解析器在 r 处停止)。

另一方面,new Array() 不会触发相同的行为,因为数组对象的 toString() 方法返回数组的内容,由逗号分隔,而不是类名。因此,new Array().toString() 产生空字符串,parseInt() 随后产生NaN

【讨论】:

  • 啊,这很有道理。谢谢!
猜你喜欢
  • 2012-02-04
  • 2018-10-01
  • 2014-06-06
  • 2012-07-05
  • 2023-01-26
  • 2023-03-26
  • 2011-09-18
  • 1970-01-01
  • 2016-11-16
相关资源
最近更新 更多