Я работаю с Google Apps Script и поэтому застрял с ECMA 5. Как и в ответе Electric Coffee, вот что я смог выяснить, что, кажется, дает верный ответ относительно того, является ли значение на самом деле NaN
, не если значение равно NaN
, но если оно действительно NaN
само по себе:
function isThisNaN(x)
{
return isNaN(x) && Object.prototype.toString.call(x) === '[object Number]';
}
console.log(isThisNaN(NaN)); // true
LOL Просто забавно, что Object.prototype.toString.call(NaN)
равно '[object Number]'
. Мой мозг новичка говорит мне, что NaN
это «не число», но, к сожалению, это не так просто.
EDIT:
Думаю, я должен был сказать, как я оказался в этой статье. Я согласился с мыслью, что , конечно, строка, не содержащая числа, не будет считаться числом ... ну, в конце концов я выяснил это:
isNaN('a'); // true
isNaN(' '); // false
, поэтому, даже если ' '
нечисловая строка, она, по-видимому, уговаривается на число (0
).
console.log(Number(' ')); // 0.0
однако ...
console.log( 0 ? true : false); // false
console.log(' ' ? true : false); // true
После прочтения я понимаю, что это немного лучше, но вау, что за умственная ерунда для новичка LOL