Wie überprüfe ich eine Variable, ob sie
null
oder istundefined
und was ist der Unterschied zwischennull
undundefined
?Was ist der Unterschied zwischen
==
und===
(es ist schwierig, Google nach "===" zu durchsuchen)?
javascript
null
undefined
MUG4N
quelle
quelle
==
und===
wird hier gut beschrieben .Antworten:
Ist die Variable
null
:... aber beachten Sie, dass Letzteres auch dann zutrifft, wenn dies der Fall
a
istundefined
.Ist es
undefined
:... aber beachten Sie auch hier, dass der letzte vage ist; es wird auch wahr sein, wenn es
a
istnull
.Trotz alledem besteht die übliche Methode, diese zu überprüfen, darin, die Tatsache zu verwenden, dass sie falsch sind :
Dies wird durch ToBoolean in der Spezifikation definiert.
Sie sind beide Werte, die normalerweise verwendet werden, um das Fehlen von etwas anzuzeigen.
undefined
ist der allgemeinere Wert, der als Standardwert für Variablen verwendet wird, bis ihnen ein anderer Wert zugewiesen wird, als Wert für Funktionsargumente, die beim Aufruf der Funktion nicht angegeben wurden, und als Wert, den Sie erhalten, wenn Sie ein Objekt fragen für eine Eigenschaft hat es nicht. Es kann aber auch in all diesen Situationen explizit verwendet werden. (Es gibt einen Unterschied zwischen einem Objekt ohne Eigenschaft und der Eigenschaft mit dem Wertundefined
. Es gibt einen Unterschied zwischen dem Aufrufen einer Funktion mit dem Wertundefined
für ein Argument und dem vollständigen Weglassen dieses Arguments.)null
ist etwas spezifischer alsundefined
: Es ist eine leere Objektreferenz. JavaScript ist natürlich lose typisiert, aber nicht alle Dinge, mit denen JavaScript interagiert, sind lose typisiert. Wenn eine API wie das DOM in Browsern eine leere Objektreferenz benötigt, verwenden wir diesenull
nichtundefined
. In ähnlicher Weise gibt diegetElementById
Operation des DOM eine Objektreferenz zurück - entweder eine gültige (wenn das DOM-Element gefunden wurde) odernull
(falls nicht).Interessanterweise (oder nicht) sind sie ihre eigenen Typen. Das heißt, es
null
ist der einzige Wert im Null-Typ undundefined
der einzige Wert im undefinierten Typ.Der einzige Unterschied zwischen ihnen besteht darin, dass
==
sie Zwang eingeben, um zu versuchen, die Werte in Einklang zu bringen, und dies===
nicht tun . So ist zum Beispiel"1" == 1
wahr, weil"1"
erzwingt1
. Ist"1" === 1
aber falsch , weil die Typen nicht übereinstimmen. ("1" !== 1
ist wahr.) Der erste (echte) Schritt von===
"Sind die Typen der Operanden gleich?" und wenn die Antwort "nein" ist, ist das Ergebnisfalse
. Wenn die Typen gleich sind, macht es genau das, was es==
macht.Typenzwang verwendet recht komplexe Regeln und kann überraschende Ergebnisse haben (zum Beispiel
"" == 0
ist wahr).Mehr in der Spezifikation:
==
auch als "lose" Gleichheit bezeichnet)===
)quelle
if (a) { ... }
würde bedeuten "wenna
wahr ist", wobei "wahr" ein Wert ungleich Null, nicht null, nicht undefiniert, nicht falsch, nicht leer ist. :-)null
es sich nicht um ein Objekt handelt , sondern um eine Objektreferenz, die "kein Objekt" bedeutet. Dies ist wichtig, da es mit vom Host bereitgestellten Schnittstellen verwendet wird, wenn sie Objektreferenzen bereitstellen, aber keine bereitstellen müssen (z. B.node.nextSibling
wannnode
das letzte Element in seinem übergeordneten Element ist odergetElementById
wenn es kein Element mit dieser ID gibt). Die Technologie, die der Host dafür verwendet, ist möglicherweise nicht so flexibel wie JavaScript innull
Bezug auf Variablen- / Eigenschaftstypen. Daher war es erforderlich, ein obj ref (im Gegensatz zuundefined
) zu haben.typeof null
Die Rückgabe von "Objekt" ist sinnvoll. Der einzige andere Wert, der Sinn machen würde, wäre "null", da er definitiv etwas anderes zurückgeben sollte alstypeof undefined
. null stellt eine Null-Objektreferenz dar, was zumindest bedeutet, dass die Variable, die sie enthält, für eine Art von 'Objekt' bestimmt ist. Wenn es ein Fehler war, war es ein guter Fehler. In Bezug auf die Antwort ist der Tipp zuundefined
! ==undefined
beim Cross-Window-Scripting gut zu wissen, insbesondere für Debugging-Zwecke.Der Unterschied ist subtil.
In JavaScript ist eine
undefined
Variable eine Variable, die nie deklariert oder nie mit einem Wert versehen wurde. Angenommen, Sie deklarierenvar a;
zum Beispiel, danna
wird es seinundefined
, weil ihm nie ein Wert zugewiesen wurde.Aber wenn man dann zuweisen
a = null;
danna
wird jetzt seinnull
. In JavaScriptnull
ist ein Objekt (versuchen Sie estypeof null
in einer JavaScript-Konsole, wenn Sie mir nicht glauben), was bedeutet, dass null ein Wert ist (tatsächlich ist sogarundefined
ein Wert).Beispiel:
Dies kann sich in Funktionsargumenten als nützlich erweisen. Möglicherweise möchten Sie einen Standardwert haben, halten jedoch null für akzeptabel. In welchem Fall können Sie tun:
Wenn Sie den
optional
ParameterdoSomething(1, 2) then
optional weglassen, ist dies die"three"
Zeichenfolge. Wenn Sie jedoch übergeben,doSomething(1, 2, null)
ist optionalnull
.Was die gleichen
==
und streng gleichen===
Komparatoren betrifft, so ist der erste schwach typisiert, während streng gleich auch die Art der Werte überprüft. Das heißt, das0 == "0"
wird wahr zurückkehren; while0 === "0"
gibt false zurück, da eine Zahl keine Zeichenfolge ist.Sie können diese Operatoren verwenden, um zwischen
undefined
einem zu prüfennull
. Zum Beispiel:Der letzte Fall ist interessant, da Sie damit überprüfen können, ob eine Variable entweder undefiniert oder null ist und sonst nichts:
quelle
Die Spezifikation ist der Ort, an dem Sie vollständige Antworten auf diese Fragen erhalten. Hier ist eine Zusammenfassung:
x
können Sie:null
um einen direkten Vergleich mit handelt===
. Beispiel:x === null
undefined
um eine von zwei grundlegenden Methoden handelt: direkten Vergleich mitundefined
odertypeof
. Aus verschiedenen Gründen bevorzuge ichtypeof x === "undefined"
.null
undundefined
mit Hilfe==
und auf den leicht obskuren Art Zwang Regeln verlassen , dass Mittelx == null
genau das tun , was Sie wollen.==
und===
besteht darin, dass, wenn die Operanden unterschiedlichen Typs sind,===
immer zurückgegeben wird,false
während==
ein oder beide Operanden mithilfe von Regeln , die zu einem etwas unintuitiven Verhalten führen, in denselben Typ konvertiert werden . Wenn die Operanden vom gleichen Typ sind (z. B. sind beide Zeichenfolgen, wie imtypeof
obigen Vergleich)==
und===
sich genau gleich verhalten.Lesen Sie mehr:
quelle
Überprüfen Sie einfach, ob eine Variable einen gültigen Wert wie folgt hat:
es wird true zurückgeben, wenn die Variable nicht enthält:
quelle
nicht definiert
Dies bedeutet, dass die Variable noch nicht initialisiert ist.
Beispiel:
gleich (==)
Es wird nur geprüft, ob der Wert nicht dem Datentyp entspricht.
Beispiel:
Weil es nur den Wert prüft.
Strict Equals (===)
Überprüft, ob Wert und Datentyp identisch sind.
Beispiel:
Da überprüft wird, dass der Datentyp x ein primitiver Typ und y ein boolesches Objekt ist.
quelle
Anzeige 1.
null
ist kein Bezeichner für eine Eigenschaft des globalen Objekts, wie es seinundefined
kannCode-Snippet anzeigen
Anzeige 2. Die
===
Prüfwerte und -typen. Die==
erfordern nicht die gleichen Typen und haben vor dem Vergleich (mit.valueOf()
und.toString()
) eine implizite Konvertierung durchgeführt . Hier haben Sie alle ( src ):wenn
== (seine Negation ! = )
=== (seine Negation ! == )
quelle
document.all == null
unddocument.all !== null
Wenn Ihr (logische) Prüfung ist für eine Negation und wollen Sie beide JS erfassen (!)
null
Undundefined
(wie verschiedene Browser finden Sie verschiedene Ergebnisse geben) Sie würde die weniger restriktive Vergleich verwenden: zB:Dies erfasst sowohl
null
als auchundefined
quelle
Versuchen Sie es mit einer anderen Logik . Sie können den folgenden Code verwenden, um alle vier (4) Bedingungen für die Validierung zu überprüfen, z. B. nicht null, nicht leer, nicht undefiniert und nicht null. Verwenden Sie nur diesen Code (! (! (Variable))) in Javascript und jquery.
}}
quelle