isNaN()について、どうも間違った説明をしているところが多いようですね(ググってて混乱しました)。
NaNは==や===に対して常にfalseを返すため、parseInt()の返値がNaNかどうかを判定するのにisNaN()を使用するわけですが、isNaN()は「NaNかどうか」では無く「数値に変換できるかどうか」を判定しているらいしいですね。
なので以下のような結果になるようです
isNaN(null); //false(nullは0扱い)
isNaN(10); //false
isNaN('10'); //false
isNaN('abc'); //true
isNaN(NaN); //true
isNaN(undefined); //true(数値には変換できない)
isNaN('10px'); //true
実験: