NaN does not follow the identity property.

NaN is the result of trying to convert a non-number to a number.

NaN with any other operation is going to produce NaN.

Number.isNaN does not convert prior to checking if a value is NaN. window/global.isNaN does.

In ES6, you can check for NaN equality using Object.is().