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)?
Wie überprüfe ich eine Variable, ob sie null
oder ist undefined
und was ist der Unterschied zwischen null
und undefined
?
Was ist der Unterschied zwischen ==
und ===
(es ist schwierig, Google nach "===" zu durchsuchen)?
Antworten:
Wie überprüfe ich eine Variable, wenn es
null
oderundefined
...
Ist die Variable null
:
if (a === null)
// or
if (a == null) // but see note below
... aber beachten Sie, dass Letzteres auch dann zutrifft, wenn dies der Fall a
ist undefined
.
Ist es undefined
:
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
... aber beachten Sie auch hier, dass der letzte vage ist; es wird auch wahr sein, wenn es a
ist null
.
Trotz alledem besteht die übliche Methode, diese zu überprüfen, darin, die Tatsache zu verwenden, dass sie falsch sind :
if (!a) {
// `a` is falsey, which includes `undefined` and `null`
// (and `""`, and `0`, and `NaN`, and [of course] `false`)
}
Dies wird durch ToBoolean in der Spezifikation definiert.
... und was ist der Unterschied zwischen
null
undundefined
?
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 Wert undefined
. Es gibt einen Unterschied zwischen dem Aufrufen einer Funktion mit dem Wert undefined
für ein Argument und dem vollständigen Weglassen dieses Arguments.)
null
ist etwas spezifischer als undefined
: 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 diese null
nicht undefined
. In ähnlicher Weise gibt die getElementById
Operation des DOM eine Objektreferenz zurück - entweder eine gültige (wenn das DOM-Element gefunden wurde) oder null
(falls nicht).
Interessanterweise (oder nicht) sind sie ihre eigenen Typen. Das heißt, es null
ist der einzige Wert im Null-Typ und undefined
der einzige Wert im undefinierten Typ.
Was ist der Unterschied zwischen "==" und "==="
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"
erzwingt 1
. 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 Ergebnis false
. 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)===
)if (a) { ... }
würde bedeuten "wenn a
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
wann node
das letzte Element in seinem übergeordneten Element ist oder getElementById
wenn es kein Element mit dieser ID gibt). Die Technologie, die der Host dafür verwendet, ist möglicherweise nicht so flexibel wie JavaScript in null
Bezug auf Variablen- / Eigenschaftstypen. Daher war es erforderlich, ein obj ref (im Gegensatz zu undefined
) 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 als typeof 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 zu undefined
! == 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 deklarieren var a;
zum Beispiel, dann a
wird es sein undefined
, weil ihm nie ein Wert zugewiesen wurde.
Aber wenn man dann zuweisen a = null;
dann a
wird jetzt sein null
. In JavaScript null
ist ein Objekt (versuchen Sie es typeof null
in einer JavaScript-Konsole, wenn Sie mir nicht glauben), was bedeutet, dass null ein Wert ist (tatsächlich ist sogar undefined
ein Wert).
Beispiel:
var a;
typeof a; # => "undefined"
a = null;
typeof null; # => "object"
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:
function doSomething(first, second, optional) {
if (typeof optional === "undefined") {
optional = "three";
}
// do something
}
Wenn Sie den optional
Parameter doSomething(1, 2) then
optional weglassen, ist dies die "three"
Zeichenfolge. Wenn Sie jedoch übergeben, doSomething(1, 2, null)
ist optional null
.
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, das 0 == "0"
wird wahr zurückkehren; while 0 === "0"
gibt false zurück, da eine Zahl keine Zeichenfolge ist.
Sie können diese Operatoren verwenden, um zwischen undefined
einem zu prüfen null
. Zum Beispiel:
null === null # => true
undefined === undefined # => true
undefined === null # => false
undefined == null # => true
Der letzte Fall ist interessant, da Sie damit überprüfen können, ob eine Variable entweder undefiniert oder null ist und sonst nichts:
function test(val) {
return val == null;
}
test(null); # => true
test(undefined); # => true
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 mit undefined
oder typeof
. Aus verschiedenen Gründen bevorzuge ich typeof x === "undefined"
.null
und undefined
mit Hilfe ==
und auf den leicht obskuren Art Zwang Regeln verlassen , dass Mittel x == 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 im typeof
obigen Vergleich) ==
und ===
sich genau gleich verhalten.Lesen Sie mehr:
Wie überprüfe ich eine Variable, wenn sie null oder undefiniert ist?
Überprüfen Sie einfach, ob eine Variable einen gültigen Wert wie folgt hat:
if(variable)
es wird true zurückgeben, wenn die Variable nicht enthält:
nicht definiert
Dies bedeutet, dass die Variable noch nicht initialisiert ist.
Beispiel:
var x;
if(x){ //you can check like this
//code.
}
gleich (==)
Es wird nur geprüft, ob der Wert nicht dem Datentyp entspricht.
Beispiel:
var x = true;
var y = new Boolean(true);
x == y ; //returns true
Weil es nur den Wert prüft.
Strict Equals (===)
Überprüft, ob Wert und Datentyp identisch sind.
Beispiel:
var x = true;
var y = new Boolean(true);
x===y; //returns false.
Da überprüft wird, dass der Datentyp x ein primitiver Typ und y ein boolesches Objekt ist.
Anzeige 1. null
ist kein Bezeichner für eine Eigenschaft des globalen Objekts, wie es sein undefined
kann
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 ! == )
document.all == null
unddocument.all !== null
Wenn Ihr (logische) Prüfung ist für eine Negation und wollen Sie beide JS erfassen (!) null
Und undefined
(wie verschiedene Browser finden Sie verschiedene Ergebnisse geben) Sie würde die weniger restriktive Vergleich verwenden: zB:
var ItemID = Item.get_id();
if (ItemID != null)
{
//do stuff
}
Dies erfasst sowohl null
als auchundefined
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.
function myFunction() {
var data; //The Values can be like as null, blank, undefined, zero you can test
if(!(!(data)))
{
//If data has valid value
alert("data "+data);
}
else
{
//If data has null, blank, undefined, zero etc.
alert("data is "+data);
}
}}
==
und===
wird hier gut beschrieben .