【问题标题】:typeof("2px" - 1 ) returns number and "2px" - 1 returns NaN. Why? [duplicate]typeof("2px" - 1 ) 返回数字,"2px" - 1 返回 NaN。为什么? [复制]
【发布时间】:2013-08-19 22:22:00
【问题描述】:

正如标题所说的那样。为什么typeof("2px" - 1) 返回number"2px" - 1 返回NaN

【问题讨论】:

  • 因为 javascript 的数据类型是在星期五下午编写的。
  • 因为typeof NaN "number"。见the specification
  • 相信this answer有你的答案。
  • @RoryMcCrossan 这是一个有趣的评论。
  • @Ic。所以已经有一个类似的问题和一个很好的答案。它应该关闭。

标签: javascript jquery


【解决方案1】:

因为NaN 的类型是number

number 在 javascript 中是 IEEE-754 双精度 (wikipedia),NaN 是该数据类型的特殊值。因此,结果是一致的。

真正的问题应该是:为什么"2px"-1 会导致NaN? Javascript 首先将字符串转换为数字,使用Number("2px"),结果为NaN,因为它不是可解析的数字。对NaN 的任何其他操作也会产生NaN

【讨论】:

  • 您能详细说明一下吗?
  • 没有什么可详细说明的。
【解决方案2】:

“2px”-1 是数字NaN

NaN 代表非数字,是 0 除以 0 或取 -1 的平方根等运算的结果。还有像这样的非法转换。

【讨论】: