isNaN: lodash vs. native JS

node v10.24.1
version: 1.0.1
endpointsharetweet
const _ = require('lodash'); console.log('NaN', _.isNaN(NaN), isNaN(NaN)); console.log('new Number(NaN)', _.isNaN(new Number(NaN)), isNaN(new Number(NaN))); console.log('undefined', _.isNaN(undefined), isNaN(undefined)); console.log('null', _.isNaN(null), isNaN(null)); console.log('{}', _.isNaN({}), isNaN({})); console.log('true', _.isNaN(true), isNaN(true)); console.log('37', _.isNaN(37), isNaN(37)); // strings console.log('37.37', _.isNaN('37.37'), isNaN('37.37')); // "37.37" is converted to the number 37.37 which is not NaN console.log("37,5", _.isNaN("37,5"), isNaN("37,5")); console.log('123ABC', _.isNaN('123ABC'), isNaN('123ABC')); // parseInt("123ABC") is 123 but Number("123ABC") is NaN console.log('', _.isNaN(''), isNaN('')); // the empty string is converted to 0 which is not NaN console.log(' ', _.isNaN(' '), isNaN(' ')); // a string with spaces is converted to 0 which is not NaN // dates console.log('new Date()', _.isNaN(new Date()), isNaN(new Date())); console.log('new Date().toString()', _.isNaN(new Date().toString()), isNaN(new Date().toString())); // This is a false positive and the reason why native isNaN is not entirely reliable console.log('blabla', _.isNaN('blabla'), isNaN('blabla'));
Loading…

no comments

    sign in to comment