Au lieu d'écrire une fonction pour faire cette vérification, vous devez simplement être en mesure d'utiliser cette expression:
(number < 0)
Javascript va évaluer cette expression en essayant d'abord de convertir le côté gauche pour un certain nombre de valeur avant de vérifier s'il est inférieur à zéro, ce qui semble être ce que tu voulais.
Les spécifications et les détails
Le comportement pour l' x < y
est spécifié dans le§section 11.8.1 L'Opérateur inférieur (<
), qui utilise §11.8.5 L'Abstrait Relationnelle de l'Algorithme de Comparaison.
La situation est très différente si les deux x
et y
sont des chaînes de caractères, mais depuis le côté droit est déjà un nombre en (number < 0)
, la comparaison va tenter de convertir le côté gauche pour un certain nombre à comparer numériquement. Si la gauche ne peut pas être convertie en un nombre, le résultat est false
.
Notez que cela peut donner des résultats différents par rapport à ta regex approche, mais en fonction de ce que vous êtes en train de faire, il peut finir par faire la bonne chose, de toute façon.
-
"-0" < 0
est false
, ce qui est cohérent avec le fait qu' -0 < 0
également false
(voir: signé zéro).
-
"-Infinity" < 0
est true
(infini est reconnu)
-
"-1e0" < 0
est true
(notation scientifique littéraux sont acceptés)
-
"-0x1" < 0
est true
(en hexadécimal, les littéraux sont acceptés)
-
" -1 " < 0
est true
(certaines formes d'espaces sont autorisés)
Pour chacun de l'exemple ci-dessus, l'expression régulière de la méthode évaluer le contraire (true
au lieu de false
, et vice-versa).
Références
Voir aussi
Annexe 1: opérateur Conditionnel ?:
Il faut dire aussi que les déclarations de cette forme:
if (someCondition) {
return valueForTrue;
} else {
return valueForFalse;
}
peut être reconstruit pour utiliser le ternaire/conditionnel ?:
opérateur (§11.12) tout simplement:
return (someCondition) ? valueForTrue : valueForFalse;
Expressions idiomatiques de l' ?:
peut rendre le code plus concis et lisible.
Questions connexes
Annexe 2: fonctions de conversion de Type
Javascript a des fonctions que vous pouvez appeler pour effectuer diverses conversions de type.
Quelque chose comme ce qui suit:
if (someVariable) {
return true;
} else {
return false;
}
Peut être reconstruit à l'aide de l' ?:
opérateur:
return (someVariable ? true : false);
Mais vous pouvez également simplifier ainsi:
return Boolean(someVariable);
Cela exige Boolean
comme une fonction (§15.16.1) pour effectuer le type de conversion. Vous pouvez même appeler Number
comme une fonction (§15.17.1) pour effectuer une conversion en nombre.
Questions connexes