TypeScript:如何检查某些值是否为NaN

aja*_*10d 33 typescript

在TypeScript中,我们如何检查某些值是否为NaN?以下不起作用:

  1. someObject.someValue == NaN
  2. someObject.someValue === NaN

请重新评论一些参考资料以获取更多详细信息.

zeh*_*zeh 63

与JavaScript相同,isNaN.

if (isNaN(someObject.someValue)) ...
Run Code Online (Sandbox Code Playgroud)

或者更现代 Number.isNaN

if (Number.isNaN(someObject.someValue)) ...
Run Code Online (Sandbox Code Playgroud)

  • 请注意,Number.isNaN(null)返回false. (4认同)
  • 任何不是“NaN”的东西都返回“false”。字符串、`null`、`undefined`、布尔值 - 它们都会从 `Number.isNaN()` 或普通的 `isNaN()` 返回 `false`。在实践中,该函数不会测试某些东西是否“不是数字”,而是测试它是否“是 NaN”,这是一个特定的无效数字值。要测试某个东西是否不是数字,请执行 `typeof something !== "number" || isNaN(something)`。 (3认同)
  • 如果其他人遇到这种情况,“window.isNaN()”会将一个值强制转换为数字,然后检查它是否为“NaN”。因此 `undefined` 和 `"hello"` 将返回 `true`,而 `undefined` 和 `""` 将返回 `false`。这就是添加“Number.isNaN”的原因,因为这会在没有初始强制的情况下显式检查“NaN”。 (2认同)
  • @zeh 根据 Typescript (es5+) `isNaN()` 只接受 `number` 类型作为其第一个参数。 (2认同)