WTF?!NaN==NaN,返回的结果是false?!
也许这是因为我们没有使用严格等价(===)操作?
var x = Math.sqrt(-2);
var y = Math.log(-1);
console.log(x === y); // false
也不对。
因为有很多方法来表示一个非数字,所以一个非数字不会等于另一个为NaN的非数字,它还是有一定道理的。
不过在ECMAScript 6中, 有一个Number.isNaN() 方法提供可靠的NaN值检测,只有在参数是真正的NaN时,才会返回true。
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(Math.sqrt(-2))); // true
console.log(Number.isNaN('hello')); // false
console.log(Number.isNaN(['x'])); // false
console.log(Number.isNaN({})); // false