Je travaille avec Google Apps Script et donc je suis coincé avec ECMA 5. Semblable à la réponse de Electric Coffee, voici ce que j'ai pu comprendre qui semble donner une réponse que si une valeur ou non est en fait NaN
, pas si une valeur est NaN
mais si elle est en fait NaN
lui-même:
function isThisNaN(x)
{
return isNaN(x) && Object.prototype.toString.call(x) === '[object Number]';
}
console.log(isThisNaN(NaN)); // true
lol Juste drôle pour moi que Object.prototype.toString.call(NaN)
est égal à '[object Number]'
. Mon cerveau de débutant me dit que NaN
est "pas un nombre" mais malheureusement ce n'est pas si simple.
EDIT: Je suppose que j'aurais dû dire comment je me suis retrouvé dans cet article. Je suis allé avec l'idée que sûrement une chaîne qui ne contient pas de numéro ne serait pas traité comme un numéro ... eh bien, j'ai fini par trouver ceci:
isNaN('a'); // true
isNaN(' '); // false
donc même si ' '
est une chaîne non numérique, il est apparemment cajolé dans un nombre (0
).
console.log(Number(' ')); // 0.0
cependant ...
console.log(0 ? true : false); // false
console.log(' ' ? true : false); // true
Après avoir lu plus je comprends un peu mieux mais wow quel crapstorm mentale pour un débutant lol
NaN est égal à lui-même jamais, par définition. Cela fonctionne de cette façon dans n'importe quelle langue. – Keith
Note [ma réponse ci-dessous] (http://stackoverflow.com/a/12628417/1195056) comme une méthode précise pour vérifier cela a été ajouté avec ECMAScript 6. – krillgar
La meilleure partie de l'événement est que 'parseFloat (" A ") == parseFloat ("A") 'return' false' –