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/

相关文章:

JavaScript - 通过数组中的ID查找对象并修改

javascript - 获取 JSON 键的文本值

javascript - Reactjs 无法读取智能合约?

C - 获取数字而不是字符串

php - 为什么答案是15?

javascript - 获取值为 true 的 JavaScript 对象的所有键

javascript - this.$el.html 与 this.$el.append

javascript - Nodejs npm mssql SQLDbType.Structured?

javascript - jQuery 获取原始文本(未转义)以通过下划线模板进一步解析

JavaScript阶乘防止无穷大