5.35 isNaN

5.35.1 语法 _.isNaN(object)

5.35.2 说明

如果object是 NaN,返回true

5.35.3 代码示例

_.isNaN(NaN); //=> true
_.isNaN(1); //=> false
_.isNaN(undefined); //=> false
_.isNaN(false); //=> false
_.isNaN(0); //=> false

5.35.3 和原生的isNaN的区别

如果变量是undefined,原生的isNaN 函数也会返回 true

_.isNaN(undefined); //=> false
isNaN(undefined); //=> true

5.35.3 源码解读

//如果是数字,并且自身前面带+号不等于自身的,就是NaN

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

5.35.3 数字前面带加号

console.log(NaN === +NaN); //false
console.log(1 === +1); //true
console.log(0 === +0); //true
console.log(Infinity === +Infinity); //true

5.35.4 其他的写法

function _isNaN(obj) {
    return isNaN(obj) && typeof obj === 'number';
}

console.log(_isNaN(NaN)); //=> true
console.log(_isNaN(Infinity)); //=> false
console.log(_isNaN(1)); //=> false
console.log(_isNaN(null)); //=> false
console.log(_isNaN(false)); //=> false
console.log(_isNaN(undefined)); //=> false
console.log(_isNaN()); //=> false