【问题标题】:Numbers having parseInt value = NaN in JavaScriptJavaScript 中具有 parseInt 值 = NaN 的数字
【发布时间】:2014-06-25 07:06:56
【问题描述】:
   typeof 2; //number
   typeof "2"; //string
   parseInt("2");//2
   typeof Infinity; //number
   parseInt(Infinity);//NaN
   typeof NaN; //number
   parseInt(NaN);//NaN

还有其他 Number 元素的 parseInt 值为 NaN 吗?如果是,请列出/描述它们

更新:在 JavaScript 中没有意义的是 isNaN(NaN) 返回 truetypeof NaN 返回 number

【问题讨论】:

标签: javascript nan


【解决方案1】:

parseInt 适用于字符串,所以无论你给它什么,它都会被转换为字符串。

Infinity => "Infinity" => NaN

但是既然你问...

parseInt(-Infinity); // NaN

【讨论】:

  • 真的不是真的alert(parseInt(UnknownVariable));永远不会工作或被转换成alert(parseInt('UnknownVariable'));
  • @Bellash:那是因为代码抛出了引用错误。该变量没有可以传递给函数的值,因为它不存在。但是,Infinity 是一个全局变量 (es5.github.io/#x15.1),其Infinity。您正在将苹果与橙子进行比较。传递给 parseInt 的每个值都会转换为字符串。
【解决方案2】:

Infinity 是一个数字,试试

isNaN(Infinity); // gives 'false' so it is a Number

但是parseInt的第一个参数是一个字符串,而Infinity已经是一个数字......所以你无法解析它。

【讨论】:

  • FWIW, NaN 也是一个数字,尽管它的名字。 typeof NaN
  • Infinity -InfinityNaN
  • 显然isNaN(NaN)true。这就是函数的全部目的。但是NaN 仍然是一个数值
  • 在 JavaScript 中没有意义的是 isNaN(NaN) 返回 truetypeof NaN 返回 number
  • @Bellash:JavaScript 实现了 IEEE 754 号码标准,该标准指定了NaN 的角色。请参阅en.wikipedia.org/wiki/NaN“在计算中,NaN 代表非数字,它是一个 数字数据类型 值,表示未定义或无法表示的值,尤其是在浮点计算中。” JavaScript 中的NaN 是一个数字,因为这就是标准的定义方式。它是一个“特殊”的数值,就像Infinity
猜你喜欢
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 2020-09-15
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多