2010-12-05 13 views
182

Ich weiß, dass unten sind die beiden Möglichkeiten in JavaScript zu überprüfen, ob eine Variable nicht null ist, aber ich bin verwirrt, welche die beste Praxis ist zu verwenden.Wie überprüft man, ob eine Variable nicht null ist?

Sollte ich:

if (myVar) {...} 

oder

if (myVar !== null) {...} 

Antwort

271

Sie nicht gleichwertig sind. Die erste wird den Block nach der if Anweisung ausführen, wenn myVartruthy ist (d auswertet zu true in einem bedingten), während die zweiten den Block ausgeführt wird, wenn myVar beliebiger anderer Wert als null ist.

  • null
  • undefined
  • 0
  • "" (die leere Zeichenkette) :

    Die einzigen Werte, die nicht truthy in JavaScript sind, sind die folgenden (aka falsy Werte)

  • false
  • NaN
40

Haben Sie einen Lese in diesem Beitrag: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

Es einige nette Tipps für JavaScript im Allgemeinen hat aber eine Sache, es nicht erwähnt ist, dass Sie für null wie überprüfen sollten:

if(myvar) { } 

Es erwähnt auch, was als "falsch" betrachtet wird, dass Sie möglicherweise nicht erkennen.

+1

Danke für die shout out Jonathon;) –

+0

dank paaren - ein einfaches und problemloses –

+25

Diese Prüfung tatsächlich nicht sicher ist. Wenn myvar 0, false oder ein anderer falscher Wert ist, wird der Test fehlschlagen (wenn Sie nur nach nicht null suchen wollen). Verwenden Sie dies also nur, um nach nicht null zu suchen, wenn die Variable niemals einen anderen Falsy-Wert haben kann. – Werzi2001

-1

Die zwei bedingten Anweisungen, die Sie hier auflisten, sind nicht besser als einander. Ihre Verwendung hängt von der Situation ab. Sie haben übrigens einen Tippfehler im 2. Beispiel. Nach dem Ausrufezeichen sollte nur ein Gleichheitszeichen stehen.

Das erste Beispiel wird festgestellt, ob der Wert in meineVar wahr ist, und führt den Code innerhalb der {...}

Das zweite Beispiel bewertet, wenn meineVar nicht gleich null macht und wenn die Fall ist wahr, es wird Ihren Code innerhalb der {

ausführen Ich schlage vor, einen Blick in bedingte Anweisungen für mehr Techniken. Sobald Sie mit ihnen vertraut sind, können Sie entscheiden, wann Sie sie benötigen.

+9

Das ist wahrscheinlich kein Tippfehler im zweiten Beispiel. Diese zweite '=' ist entscheidend und macht einen großen Unterschied in der Frage. Vielleicht ist Ihnen die Existenz von '! ==' und '===' Operatoren in JavaScript nicht bekannt? –

+1

Vielen Dank, dass Sie darauf hingewiesen haben. Ich dachte sofort, es wäre ein Tippfehler, aber jetzt erinnere ich mich an das, was ich schon lange nicht mehr gesehen und vergessen habe. –

27

Hier ist, wie Sie testen können, ob eine Variable nicht NULL ist:

if (myVar !== null) {...}

der Block ausgeführt wird, wenn myVar nicht null ist ..es wird ausgeführt, wenn myVar nicht definiert oder falsch ist oder 0 oder irgendetwas anderes ..

4

Es gibt ein anderes mögliches Szenario, das ich gerade rübergekommen bin.

Ich habe einen Ajax-Aufruf und bekam Daten als Null, in einem String-Format. Ich musste es so überprüfen:

if(value != 'null'){} 

Also, Null war eine Zeichenfolge, die "Null" anstatt wirklich null zu lesen.

EDIT: Es sollte klar sein, dass ich dies nicht als die Art und Weise verkaufen es sollte erfolgen. Ich hatte ein Szenario, in dem dies nur so möglich war. Ich bin mir nicht sicher warum ... vielleicht hat der Typ, der das Backend geschrieben hat, die Daten falsch dargestellt, aber egal, das ist das wahre Leben. Es ist frustrierend zu sehen, dass dies von jemandem abgelehnt wird, der versteht, dass es nicht ganz richtig ist, und dann von jemandem abgestimmt wird, dem es tatsächlich hilft.

+0

Analysieren Sie lieber Ihren Wert, als mit 'null' Strings zu vergleichen. – Bergi

+1

Diese Antwort ist legitim, ob Sie die Anwendung davon verstehen oder nicht. Ich schätze es nicht, für die Veröffentlichung von Dingen, die tatsächlich funktionieren, abgelehnt zu werden. Hast du bemerkt, dass es eine Verbesserung gab, bevor du es berührt hast? Das liegt daran, dass es ein echtes Szenario ist. – Ben

+1

ja, und ich habe da runtergeregelt, weil ich denke, dass es die falsche Lösung ist. Im Falle eines Ajax-Aufrufs sollten Sie besser "value = JSON.parse (value)" verwenden und dann den einfachen und korrekten "value! = Null" -Test verwenden. – Bergi

1

Wenn myVar Null ist, dann wenn Block nicht anders ausgeführt wird, wird es ausgeführt.

if (myVar != 'null') {...}