【问题标题】:What does JavaScript do with Number(undefined)? [duplicate]JavaScript 对 Number(undefined) 做了什么? [复制]
【发布时间】:2015-09-16 00:07:16
【问题描述】:

我最近因为无聊而想定义一个函数来复制 isNaN 的功能,当时我发现 Number(undefined) 等于 NaN</code>, but if you doNumber(undefined) === NaNyou getfalse`。

我什至尝试了(typeof Number(undefined)) === (typeof NaN),它返回true

JavaScript 在这里做什么?

【问题讨论】:

  • (NaN == NaN) === false
  • 另外,在调试(typeof Number(undefined)) === (typeof NaN) 之类的东西时,只需分别记录=== 的两侧,您会看到两者都返回"number"。 (是的,typeof NaN === "number"
  • @Cerbrus 是的,我知道typeof NaN === "number",但我不知道NaN 永远不等于任何东西

标签: javascript types undefined v8 nan


【解决方案1】:

常量NaN 永远不等于任何东西,包括NaNtypeof NaN 的值为“数字”,因为NaN 是一个数字常量。

Number(undefined) 的值为NaN。您可以使用isNaN() 来验证这一点,或者干脆:

var x = Number(undefined);
if (x !== x) alert("It's NaN!");

【讨论】:

  • OP 自己算出了最后一行:“当我发现时,Number(undefined) 等于 NaN ;-)
  • @Cerbrus 也许他会相信我而不是他自己 :)
  • 好点,有时,外部“是的,没错” 有帮助!
  • 只是补充一点,虽然typeof NaN"number",但NaN instanceof Numberfalse。 JavaScript 哇!
  • @tkoomzaaskz 没错,但17 instanceof Number 也是falseNaN17 都不是对象实例。
猜你喜欢
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 2018-06-03
  • 2016-02-12
  • 2016-08-22
  • 2014-05-11
  • 2012-02-26
  • 1970-01-01
相关资源
最近更新 更多