我遇到了goog.math.isFiniteNumber
Google Closure Library 中的函数。它的作用是检查给定的数字是否是有限的且不是 NaN
.
底层代码是:
goog.math.isFiniteNumber = function(num) {
return isFinite(num) && !isNaN(num);
};
因此,首先它使用 native isFinite
检查该数字是否是有限的。函数,然后进行额外检查以确保该数字不是 NaN
使用isNaN
.
但是,isFinite
如果参数是 NaN
则已经返回 false 。那么,检查isNaN
有什么优势呢?提供?
最佳答案
唯一的区别是:
!isNan(1/0) // --> true
isFinite(1/0) // --> false
isNaN 检查参数是否为数字。无穷大 (+/-) 也是数值型的,因此它们可以通过 isNaN 检查,但不能通过 isFinite 检查。
** 请注意,任何可以解析为数字的字符串(“2”、“3.14”)都会导致 isNaN 返回 false。
希望这有帮助。
PS:用户1170379给出的答案非常接近完美。
关于javascript - 为什么在 isFinite() 之后检查 !isNaN()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5690071/