javascript - 为什么在 isFinite() 之后检查 !isNaN()?

标签 javascript nan google-closure-library

我遇到了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/

相关文章:

javascript - 递归函数中的 return 并不退出函数

python - 当列值匹配时,Pandas Dataframe 从行中替换 Nan

python - 以简单的方式用 nan 替换 np 数组的 0 值

javascript - 创建带闭包的 slider

git - Google Closure Library 发布管理

JavaScript 数组比较奇怪的行为

javascript - Jest/React - 如何在单元测试中使用全局对象?

javascript - 我怎样才能让谷歌的闭包库加载得更快?

javascript - 列出 Youtube channel 的所有视频时未定义 nextPageToken (API v3)

c++ - 为 NAN 值过滤 OpenCV Mat