javascript – NaN!== parseInt(undefined);

这怎么可能是假的?
console.log(parseInt(undefined));
//NaN
console.log(parseInt(undefined)===NaN);
//false

这看起来很愚蠢

解决方法

NaN不等于任何东西,甚至本身.使用 isNaN检测NaN而不是相等.
NaN === NaN  // -> false
isNaN(NaN)   // -> true (argument is coerced [ToNumber] as required)
x = NaN
x !== x      // -> true (would be false for any other value of x)
NaN || "Hi"  // -> "Hi" (NaN is a false-y value,but not false)

这是遵循IEEE-754的JavaScript和(安静)NaN lack-of-ordering behavior的结果:

A comparison with a NaN always returns an unordered [not equal] result even when comparing with itself.

另见What is the rationale for all comparisons returning false for IEEE754 NaN values?

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...