Ich weiß, dass im Folgenden die beiden Möglichkeiten in JavaScript aufgeführt sind, um zu überprüfen, ob eine Variable nicht vorhanden ist null
, aber ich bin verwirrt, welche Vorgehensweise die beste ist.
Soll ich tun:
if (myVar) {...}
oder
if (myVar !== null) {...}
javascript
comparison
null-check
Nickb
quelle
quelle
Antworten:
Sie sind nicht gleichwertig. Die erste wird der Block nach dem Ausführen
if
Anweisung , wennmyVar
ist truthy (dh ausgewertettrue
in einem bedingten), während der zweite den Block ausgeführt wird , wennmyVar
irgendein anderer Wert alsnull
.Die einzigen Werte, die in JavaScript nicht wahr sind, sind die folgenden (auch als falsche Werte bezeichnet):
null
undefined
0
""
(die leere Zeichenfolge)false
NaN
quelle
So können Sie testen, ob eine Variable nicht NULL ist:
if (myVar !== null) {...}
Der Block wird ausgeführt, wenn myVar nicht null ist. Er wird ausgeführt, wenn myVar undefiniert oder falsch oder
0
oderNaN
oder irgendetwas anderes ist.quelle
("")
und undefinierte Zeichenfolge . Siehe meine Geige als Referenz: jsfiddle.net/b0tm7yafLesen Sie diesen Beitrag: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
Es hat einige nette Tipps für JavaScript im Allgemeinen, aber eine Sache, die es erwähnt, ist, dass Sie nach Null suchen sollten, wie:
Es wird auch erwähnt, was als "Falsey" angesehen wird, was Sie möglicherweise nicht realisieren.
quelle
if(myVar) { code }
wird NICHT nur ausgeführt, wenn ermyVar
gleich ist:false, 0, "", null, undefined, NaN
oder Sie nie eine Variable definiert habenmyVar
(dann stoppt der Code zusätzlich die Ausführung und löst eine Ausnahme aus).if(myVar !== null) {code}
Testament wird NICHT nur ausgeführt, wenn ermyVar
gleich istnull
oder Sie ihn nie definiert haben (löst eine Ausnahme aus).Hier haben Sie alle ( src )
wenn
== (seine Negation ! = )
=== (seine Verneinung ! == )
quelle
Es gibt noch ein anderes mögliches Szenario, auf das ich gerade gestoßen bin.
Ich habe einen Ajax-Aufruf durchgeführt und Daten als Null in einem Zeichenfolgenformat zurückerhalten. Ich musste es so überprüfen:
Null war also eine Zeichenfolge, die "null" lautete, anstatt wirklich null zu sein.
EDIT: Es sollte verstanden werden, dass ich dies nicht so verkaufe, wie es gemacht werden sollte. Ich hatte ein Szenario, in dem dies der einzige Weg war, dies zu tun. Ich bin mir nicht sicher warum ... Vielleicht hat der Typ, der das Backend geschrieben hat, die Daten falsch dargestellt, aber unabhängig davon ist dies das wirkliche Leben. Es ist frustrierend zu sehen, dass dies von jemandem herabgestimmt wird, der versteht, dass es nicht ganz richtig ist, und dann von jemandem hochgestimmt wird, dem es tatsächlich hilft.
quelle
null
Zeichenfolgen.value = JSON.parse(value)
den einfachen und richtigenvalue != null
Test besser durchführen und dann verwendenWenn
myVar
null ist, wird der Block ausgeführt, wenn er nicht anderweitig ausgeführt wird.if (myVar != null) {...}
quelle
'null'
, sondern der spezielle Wertnull
.Manchmal ist es besser, vorbereitet zu sein, wenn es nicht einmal definiert wurde. Dafür habe ich typeof verwendet
quelle
Die beiden hier aufgeführten bedingten Anweisungen sind nicht besser als die anderen. Ihre Nutzung 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 ermittelt, ob der Wert in myVar wahr ist, und führt den Code innerhalb von {...} aus
Im zweiten Beispiel wird ausgewertet, ob myVar nicht gleich null ist. Wenn dieser Fall zutrifft, wird Ihr Code innerhalb von {...} ausgeführt.
Ich schlage vor, in bedingten Aussagen nach weiteren Techniken zu suchen. Sobald Sie mit ihnen vertraut sind, können Sie entscheiden, wann Sie sie benötigen.
quelle
=
ist entscheidend und macht einen großen Unterschied in der Frage. Vielleicht sind Sie sich der Existenz!==
und der===
Operatoren in JavaScript nicht bewusst ?