web-dev-qa-db-fra.com

Javascript pas plus grand que

Comment vérifier si la valeur est pas supérieure à 0 en javascript?

J'ai essayé 

if(!a>0){}

Mais ça ne marche pas.

13
fc123

Vous avez besoin d'un deuxième ensemble de supports:

if(!(a>0)){}

Ou, encore mieux, "pas plus grand que" revient à dire "moins que ou égal à":

if(a<=0){}
53
Mureinik

La réponse de Mureinik est tout à fait correcte, mais comme "comprendre les valeurs de Falsey" est l'une des parties les plus importantes et moins intuitives de JavaScript, cela vaut peut-être la peine d'expliquer un peu plus.

Sans la deuxième série de crochets, la déclaration à évaluer 

!a>0

est en fait évalué comme 

(!a) > 0

Alors que veut dire (! A)? Cela signifie trouver la vérité booléenne de "a" et la retourner; vrai devient faux et faux devient vrai ... La vérité booléenne de "a" signifie - si elle a une des valeurs considérées comme "fausse", elle est fausse. Dans tous les autres cas, c'est-à-dire pour toutes les autres valeurs possibles de "a", il s'agit de "vrai" . Les valeurs de Falsey sont: 

false
0 (and -0)
"" (the empty string)
null
undefined
NaN (Not a Number - a value which looks like a number, but cannot be evaluated as one

Donc, si a une de ces valeurs, elle est fausse et! A est vraie Si elle en a une autre, elle est vraie et donc! A est fausse.

Et ensuite, nous essayons de comparer ceci à 0 . Et 0, comme nous le savons, peut aussi être "faux", votre comparaison est donc soit 

if (true > false) {}

ou

if (false > false) {}

Étant donné que ni vrai ni faux ne peuvent en réalité jamais être égaux à faux (ils ne peuvent pas être supérieurs ou inférieurs à!), Votre "si" échouera toujours et le code entre crochets ne sera jamais évalué.

7
Ben Green

a <= 0 ou (moins clairement, IMO) !(a > 0)

L'opérateur ! est appliqué à a et non à l'expression entière. Des parenthèses supplémentaires sont donc nécessaires si vous choisissez la route "pas".

2
Dave Newton

Si vous voulez vraiment utiliser le symbole >, inversez les opérateurs.

if(0>a)

Si a peut également être égal à 0, alors,

if(0>=a)
0
jjk_charles