it-swarm.com.de

JavaScript-Überprüfung auf Null im Vergleich zu undefined und Unterschied zwischen == und ===

Ich weiß, es gibt einige Threads, die sich mit diesem Thema befassen. Aber ich habe die Suche benutzt und nicht die Antwort bekommen, die meinen Bedürfnissen entspricht. Auf geht's:

  1. Wie überprüfe ich eine Variable, wenn sie null oder undefined ist und was ist der Unterschied zwischen null und undefined?

  2. Was ist der Unterschied zwischen "==" und "===" (es ist schwierig, Google nach === zu suchen)?

509
MUG4N

Wie überprüfe ich eine Variable, wenn sie null oder undefined... ist?.

Ist die Variable null:

if (a === null)
// or
if (a == null) // but see note below

... aber beachten Sie, dass Letzteres auch dann zutrifft, wenn aundefined ist.

Ist es undefined:

if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below

... aber auch hier ist zu beachten, dass der letzte vage ist; es wird auch wahr sein, wenn anull ist.

Trotz alledem besteht die übliche Möglichkeit, diese zu überprüfen, darin, dass sie falsey 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 und undefined?

Diese beiden Werte werden normalerweise verwendet, 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 wurde, als Wert für Funktionsargumente, die beim Aufruf der Funktion nicht angegeben wurden, und als Wert, den Sie erhalten Wenn Sie ein Objekt nach einer Eigenschaft fragen, die es nicht hat. Es kann aber auch explizit in all diesen Situationen 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 handelt sich um eine leere Objektreferenz. Natürlich ist JavaScript lose geschrieben, aber nicht alle Dinge, mit denen JavaScript interagiert, sind lose geschrieben. Wenn eine API wie das DOM in Browsern eine leere Objektreferenz benötigt, verwenden wir null, nicht undefined. In ähnlicher Weise gibt die Operation getElementById des DOM eine Objektreferenz zurück - entweder eine gültige (wenn das DOM-Element gefunden wurde) oder null (wenn nicht).

Interessanterweise (oder auch nicht) sind sie ihre eigenen Typen. Das heißt, null ist der einzige Wert im Typ Null, und undefined ist der einzige Wert im Typ Undefiniert.

Was ist der Unterschied zwischen "==" und "==="

Der einzige Unterschied zwischen ihnen besteht darin, dass == einen Druck ausübt, um zu versuchen, die Werte abzugleichen, und === nicht. Zum Beispiel ist "1" == 1 wahr, weil "1" zu 1 zwingt. Aber "1" === 1 ist false, weil die Typen nicht übereinstimmen. ("1" !== 1 ist wahr.) Der erste (echte) Schritt von === ist "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 == macht.

Typenzwang verwendet recht komplexe Regeln und kann überraschende Ergebnisse haben (zum Beispiel ist "" == 0 wahr).

Mehr in der Spezifikation:

898
T.J. Crowder

Der Unterschied ist subtil.

In JavaScript ist eine Variable undefined eine Variable, die nie deklariert wurde oder niemals einen Wert zugewiesen hat. Nehmen wir an, Sie erklären zum Beispiel var a;, dann wird aundefined sein, da ihm nie ein Wert zugewiesen wurde.

Wenn Sie dann a = null; zuweisen, wird a jetzt null sein. In JavaScript ist null ein Objekt (versuchen Sie typeof null in einer JavaScript-Konsole, wenn Sie mir nicht glauben), was bedeutet, dass null ein Wert ist (sogar undefined ist 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, aber Null als akzeptabel betrachten. In diesem Fall können Sie Folgendes tun:

function doSomething(first, second, optional) {
    if (typeof optional === "undefined") {
        optional = "three";
    }
    // do something
}

Wenn Sie den Parameter optional nicht angeben, wird doSomething(1, 2) thenoptional die "three"-Zeichenfolge sein. Wenn Sie jedoch doSomething(1, 2, null) übergeben, ist optional null.

Bei den gleichwertigen ==- und strikt gleichen ===-Komparatoren ist der erste Typ schwach, während strikt gleich auch nach dem Wertetyp gesucht wird. Das bedeutet, dass 0 == "0" true zurückgibt. Während 0 === "0" wird false zurückgeben, da eine Zahl keine Zeichenfolge ist.

Sie können diese Operatoren verwenden, um zwischen undefined und null zu suchen. Zum Beispiel:

null === null            # => true
undefined === undefined  # => true
undefined === null       # => false
undefined == null        # => true

Der letzte Fall ist interessant, weil Sie damit prüfen können, ob eine Variable entweder undefiniert oder null ist und nichts anderes:

function test(val) {
    return val == null;
}
test(null);       # => true
test(undefined);  # => true
87

Die Spezifikation ist der Ort, an dem Sie vollständige Antworten auf diese Fragen erhalten. Hier ist eine Zusammenfassung:

  1. Für eine Variable x können Sie:

    • prüfen Sie, ob es sich um null handelt, indem Sie mit === direkt vergleichen. Beispiel: x === null
    • prüfen Sie, ob es sich um undefined handelt, indem Sie eine der beiden folgenden grundlegenden Methoden verwenden: direkter Vergleich mit undefined oder typeof. Aus verschiedenen Gründen bevorzuge ich typeof x === "undefined".
    • prüfen Sie, ob es sich um eine von null und undefined handelt, indem Sie == verwenden und sich auf die etwas geheimnisvollen Zwangsregeln stützen, die bedeuten, dass x == null genau das tut, was Sie möchten.

  2. Der grundlegende Unterschied zwischen == und === besteht darin, dass === bei unterschiedlichen Operanden immer false zurückgibt, während == einen oder beide Operanden mithilfe von rules in denselben Typ konvertiert, was zu einem etwas unintuitiven Verhalten führt. Wenn die Operanden vom gleichen Typ sind (z. B. sind beide Zeichenfolgen wie im obigen Vergleich typeof), verhalten sich == und === genau gleich.

Mehr lesen:

14
Tim Down

nicht definiert

Das bedeutet, dass die Variable noch nicht initialisiert ist. 

Beispiel:

var x;
if(x){ //you can check like this
   //code.
}

entspricht (==)

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 Wert überprüft.

Strikte Gleiche (===)

Überprüft, ob der Wert und der Datentyp gleich sind.

Beispiel:

var x = true;
var y = new Boolean(true);
x===y; //returns false.

Da der Datentyp überprüft wird, ist x ein primitiver Typ und y ist ein boolesches Objekt.

7
kannanrbk

Wie überprüfe ich eine Variable, wenn sie null oder undefiniert ist?

prüfen Sie einfach, ob eine Variable einen gültigen Wert wie folgt hat: 

if(variable)

es wird true zurückgegeben, wenn die Variable Folgendes enthält:

  • null
  • undefined
  • false
  • "" (eine leere Zeichenfolge)
  • NaN
2
Sumit Joshi

Wenn Ihre (logische) Prüfung auf eine Negation (!) Gerichtet ist und Sie sowohl JS null als auch undefined erfassen möchten (da verschiedene Browser unterschiedliche Ergebnisse liefern), verwenden Sie den weniger restriktiven Vergleich:

var ItemID = Item.get_id();
if (ItemID != null)
{
 //do stuff
}

Dadurch werden sowohl null als auch undefined erfasst.

1
DaniDev

Sie können untenstehenden Code verwenden, um alle vier (4) Bedingungen für die Validierung zu prüfen, wie z. B. nicht null, nicht leer, nicht undefiniert und nicht null. Verwenden Sie diesen Code (! (! (Variable))) nur in Javascript und in 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);
}

}

0
Ravikant

Anzeige 1. null ist kein Bezeichner für eine Eigenschaft des globalen Objekts, wie undefinedkann sein

let x;      // undefined
let y=null; // null
let z=3;    // has value
// 'w'      // is undeclared

if(!x) console.log('x is null or undefined');
if(!y) console.log('y is null or undefined');
if(!z) console.log('z is null or undefined');

try { if(w) 0 } catch(e) { console.log('w is undeclared') }
// typeof not throw exception for undelared variabels
if(typeof w === 'undefined') console.log('w is undefined');

Anzeige 2. Der === prüft Werte und Typen. Der == erfordert nicht dieselben Typen und hat vor dem Vergleich eine implizite Konvertierung durchgeführt (unter Verwendung von .valueOf() und .toString()). Hier haben Sie alle ( src ):

if

 enter image description here

== (seine Negation! = )

 enter image description here

=== (seine Negation! == )

 enter image description here

0