【发布时间】:2017-07-28 00:47:22
【问题描述】:
在 TypeScript 中,我们如何检查某个值是否为 NaN?
以下不起作用:
someObject.someValue == NaN
someObject.someValue === NaN
【问题讨论】:
标签: typescript
在 TypeScript 中,我们如何检查某个值是否为 NaN?
以下不起作用:
someObject.someValue == NaN
someObject.someValue === NaN
【问题讨论】:
标签: typescript
与 JavaScript 相同,isNaN。
if (isNaN(someObject.someValue)) ...
或者更现代的Number.isNaN
if (Number.isNaN(someObject.someValue)) ...
【讨论】:
NaN 的东西都会返回false。字符串、null、undefined、布尔值 - 它们都会从 Number.isNaN() 或普通的 isNaN() 返回 false。该函数不会测试某个东西是否“不是数字”,而是测试它是否“是 NaN”,这是一个特定的无效数字值,在实践中。要测试某物是否不是数字,请执行typeof something !== "number" || isNaN(something)。
window.isNaN() 会将一个值强制转换为一个数字,然后检查它是否是 NaN。所以undefined 和"hello" 将返回true,而undefined 和"" 返回false。这就是添加 Number.isNaN 的原因,因为它确实会在没有初始强制的情况下明确检查 NaN。
"123.123" 将返回 false,但 "123,123" 将返回 true。
isNaN() 仅将 number 类型作为其第一个参数。