2017-02-19 2 views
0

Ich versuche, meine if-Anweisung, um herauszufinden, warum wahre Ausgabe des Senden in meiner if-Anweisung für null Situationen trotz Bilanzierung. Kann jemand erklären, was mit meinen Bedingungen falsch ist und warum null für wahr triggert?Javascript - Wenn Statement Return Null Trotz Bedingung

if(startDate || startDate != null){ 
      filterQuery.push('dateStart=' + startDate); 
} 

Ausgänge dateStart=null in Fällen, in denen es ein Nullwert ist.

+1

Was bedeutet 'typeof startdate;' kehrt? –

+0

Wenn 'startDate' wirklich' null' ist, ist diese Bedingung definitiv falsch. (Es wird auch falsch sein, wenn 'startDate' ist' undefined'.) –

+0

Es gibt String – cphill

Antwort

2

Sie haben said dass typeof startDate Sie "string" gibt. Das ist dein Problem: "null" ist ein truthy Wert (also besteht es den ersten Test), der != null ist (so besteht er den zweiten Test). So Ihre Bedingung ist wahr, und der Ausgang verketten die Zeichenfolge"null" auf Ihre Fehlermeldung.

+1

Great Call . Ich hätte es vorziehen sollen, 'typeof' zu verwenden, bevor ich zu der Annahme überspringe, dass es sich um einen tatsächlichen 'Null'-Wert handelt – cphill

-2

Verwenden

if(typeof startDate !== "undefined") { 
+1

Was hat das mit einem 'Null'-Wert zu tun? Dadurch wird sichergestellt, dass "Null" gedruckt wird, was das OP nicht wünscht. – trincot

+0

Sie möchten vielleicht überprüfen Sie diese http://stackoverflow.com/questions/5515310/is-there-a-standard-function-to-check-for-null-undefined-or-blank-variables-in –