【发布时间】:2020-11-10 20:02:30
【问题描述】:
我查看了 MDN 文档和其他 Stack Overflow 问题,但找不到确切的原因。我知道 isNaN 试图将值解析为数字,但是当我尝试在“abc”上运行 Number.parseInt 或 Number.parseFloat 时,它给了我“NaN”,但是当我实际运行 isNaN 函数时,它给了我“假”。
我知道有更好的方法来检查某事物是否为数字,例如 Number.isFinite(),但在这种情况下,我试图了解 isNaN 是如何工作的。
console.log(Number.parseInt('abc'));
console.log(Number.parseFloat('abc'));
console.log(Number.isNaN('abc'));
【问题讨论】:
-
因为
'abc'的类型不是数字。 "isNaN 尝试将值解析为数字" - 不,它没有。见developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。你可能会想到全球版developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。 -
是的,在这种情况下,isNAN 不应该是真而不是假吗? isNAN 代表 is Not a Number 对吗?
-
"我知道 isNaN 试图将值解析为数字," - 你是对的,全局
isNaN函数就是这样做的。但是,您正在调用Number.isNaN,这是一个具有不同操作的不同函数。它会逐字检查您给它的值是否是NaN,而不是它是否转换 为NaN -
不,字符串不是
Number,但也不是数值NaN。 -
@Link 它代表值“不是数字”。不适用于碰巧不是数字的 任何 值。
标签: javascript undefined-behavior