javascript - 理解下划线对 isNaN 的实现

标签 javascript numbers underscore.js nan

取自 underscore.js 来源:

_.isNaN = function(obj) {
  return _.isNumber(obj) && obj != +obj;
};

他们为什么要这样做?上面的实现是否等同于:

_.isNaN = function(obj) {
  return obj !== obj;
};

如果是,为什么是“更复杂”的版本?如果不是,行为差异是什么?

最佳答案

_.isNaN(new Number(NaN)) 返回 true。

那是 by design .

var n = new Number(NaN);
console.log(_.isNaN(n), n!==n); // logs true, false

关于javascript - 理解下划线对 isNaN 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15176076/

相关文章:

jsp - 结合 UNDERSCORE.JS 和 JSP

javascript - 如何使用Ajax获取文件上传百分比?

javascript - 如何查找当前选定 DOM 对象的所有 sibling

javascript - babelrc 中指定的未知插件 "transform-object-assign"

python - 为什么 9007199254740993 != 9007199254740993.0?

javascript - 在下划线模板三元中打印变量

javascript - 使用 jquery 触发 .has-error 类的 Bootstrap

ios - 在 Swift 中获取整数的第 n 位数字?

android - 如何在 PhoneGap 中获取 IMEI 号码?

javascript - 使用 underscore.js 计算对象属性