2015-01-03 22 views
7

Jak sprawdzić, czy wartość jest nie większa niż 0 w javascript?JavaScript nie większy niż 0

Próbowałem

if(!a>0){} 

Ale to nie działa.

+1

Tylko jeśli (a <0) nie ma problemu. – harshes53

+0

@ hbk35 Co jeśli 'a == 0' ??? –

+0

możliwy duplikat [escape less/greater niż javascript] (http://stackoverflow.com/questions/5225096/escape-less-greater-than-javascript) – fc123

Odpowiedz

40

Potrzebny jest drugi zestaw uchwytów:

if(!(a>0)){} 

Albo, jeszcze lepiej „nie większy niż” jest taka sama jak powiedzenie „mniejsze lub równe”:

if(a<=0){} 
+2

Zwróć uwagę, że dwie instrukcje "if" są takie same, jeśli "a" jest liczbą. 'tempStr =" asdasdasd "; ! (tempStr> 0) // prawda; tempStr <= 0 // false; ' – dayuloli

+5

@Mureinik:'! (>) 'to nie to samo co' <= 'jeśli' a' ma wartość null/undefined. –

2

a <= 0 lub (mniej wyraźnie, IMO) !(a > 0)

Operator ! jest stosowany do a, a nie do całego wyrażenia, więc dodatkowe paren Tezy są konieczne, jeśli idziesz trasą "nie".

0

Jeśli piekło gięte na użyciu > symbol, po prostu odwrócić operatorów

if(0>a) 

Jeśli a może być też równa 0 więc

if(0>=a) 
6

odpowiedź Mureinik jest całkowicie poprawna , ale widząc "zrozumienie wartości falseta" jest jedną z ważniejszych, mniej intuicyjnych części JavaScript, być może warto wyjaśnić trochę więcej.

Bez drugiego zestawu wsporników, oświadczenie należy ocenić

!a>0 

jest właściwie ocenione jako

(!a) > 0 

więc co ma (! A) oznacza? To znaczy, znajdź boolską prawdę "a" i odwróć ją; prawda staje się fałszywa, a fałsz staje się prawdą. Boolowska prawdomówność "a" oznacza - jeśli ma jedną z wartości uznawanych za "fałszywe", wówczas jest fałszywa. We wszystkich innych przypadkach, tj. Dla wszystkich innych możliwych wartości "a", jest "prawdziwe". Wartości falsey są:

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 

Tak więc, jeśli ma żadnej z tych wartości, to jest fałszywe i to prawda Jeśli ma jakiekolwiek inne, to prawda, a zatem jest fałszywy!.

A potem staramy się porównać do 0. i 0, jak wiemy, może być również "false", więc porównanie jest albo

if (true > false) {} 

lub

if (false > false) {} 

Uznając, że ani prawda, ani fałsz nie mogą w rzeczywistości być niczym innym jak fałszywym (nie mogą być większe ani mniejsze niż!), Twoje "jeśli" zawsze zawiedzie, a kod wewnątrz nawiasów nigdy nie zostanie oceniony.

+1

Świetna odpowiedź. Tylko: 'true> 0' lub (' true> false') faktycznie daje "true" w JavaScript, więc twoja ostatnia instrukcja ("nie mogą być większe lub mniejsze niż") jest błędna. –

Powiązane problemy