Wie überprüfe ich eine Variable, ob sie
nulloder istundefinedund was ist der Unterschied zwischennullundundefined?Was ist der Unterschied zwischen
==und===(es ist schwierig, Google nach "===" zu durchsuchen)?
Wie überprüfe ich eine Variable, ob sie nulloder ist undefinedund was ist der Unterschied zwischen nullund undefined?
Was ist der Unterschied zwischen ==und ===(es ist schwierig, Google nach "===" zu durchsuchen)?
Antworten:
Wie überprüfe ich eine Variable, wenn es
nulloderundefined...
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 aist 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 aist 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
nullundundefined?
Sie sind beide Werte, die normalerweise verwendet werden, um das Fehlen von etwas anzuzeigen. undefinedist 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 undefinedfür ein Argument und dem vollständigen Weglassen dieses Arguments.)
nullist 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 nullnicht undefined. In ähnlicher Weise gibt die getElementByIdOperation 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 nullist der einzige Wert im Null-Typ und undefinedder 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" == 1wahr, weil "1"erzwingt 1. Ist "1" === 1aber falsch , weil die Typen nicht übereinstimmen. ( "1" !== 1ist 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 "" == 0ist wahr).
Mehr in der Spezifikation:
==auch als "lose" Gleichheit bezeichnet)===)if (a) { ... }würde bedeuten "wenn awahr ist", wobei "wahr" ein Wert ungleich Null, nicht null, nicht undefiniert, nicht falsch, nicht leer ist. :-)
nulles 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.nextSiblingwann nodedas letzte Element in seinem übergeordneten Element ist oder getElementByIdwenn es kein Element mit dieser ID gibt). Die Technologie, die der Host dafür verwendet, ist möglicherweise nicht so flexibel wie JavaScript in nullBezug auf Variablen- / Eigenschaftstypen. Daher war es erforderlich, ein obj ref (im Gegensatz zu undefined) zu haben.
typeof nullDie 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! == undefinedbeim Cross-Window-Scripting gut zu wissen, insbesondere für Debugging-Zwecke.
Der Unterschied ist subtil.
In JavaScript ist eine undefinedVariable eine Variable, die nie deklariert oder nie mit einem Wert versehen wurde. Angenommen, Sie deklarieren var a;zum Beispiel, dann awird es sein undefined, weil ihm nie ein Wert zugewiesen wurde.
Aber wenn man dann zuweisen a = null;dann awird jetzt sein null. In JavaScript nullist ein Objekt (versuchen Sie es typeof nullin einer JavaScript-Konsole, wenn Sie mir nicht glauben), was bedeutet, dass null ein Wert ist (tatsächlich ist sogar undefinedein 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 optionalParameter doSomething(1, 2) thenoptional 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 undefinedeinem 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:
xkönnen Sie:nullum einen direkten Vergleich mit handelt ===. Beispiel:x === nullundefinedum eine von zwei grundlegenden Methoden handelt: direkten Vergleich mit undefinedoder typeof. Aus verschiedenen Gründen bevorzuge ich typeof x === "undefined".nullund undefinedmit Hilfe ==und auf den leicht obskuren Art Zwang Regeln verlassen , dass Mittel x == nullgenau das tun , was Sie wollen.==und ===besteht darin, dass, wenn die Operanden unterschiedlichen Typs sind, ===immer zurückgegeben wird, falsewä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 typeofobigen 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. nullist 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 == nullunddocument.all !== null
Wenn Ihr (logische) Prüfung ist für eine Negation und wollen Sie beide JS erfassen (!) nullUnd 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 nullals 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 .