Ich habe das hier ausgewählt
Der undefinierte Wert ist ein primitiver Wert, der verwendet wird, wenn einer Variablen kein Wert zugewiesen wurde.
Der Nullwert ist ein primitiver Wert, der die Null-, leere oder nicht vorhandene Referenz darstellt.
Wenn Sie eine Variable über var deklarieren und ihr keinen Wert geben, ist der Wert undefiniert. Wenn Sie versuchen, diesen Wert für WScript.Echo () oder alert () zu verwenden, wird an sich nichts angezeigt. Wenn Sie jedoch eine leere Zeichenfolge anhängen, wird plötzlich Folgendes angezeigt:
var s;
WScript.Echo(s);
WScript.Echo("" + s);
Sie können eine Variable deklarieren, auf null setzen und das Verhalten ist identisch, außer dass "null" im Vergleich zu "undefiniert" ausgedruckt wird. Dies ist in der Tat ein kleiner Unterschied.
Sie können sogar eine undefinierte Variable mit null vergleichen oder umgekehrt, und die Bedingung ist wahr:
undefined == null
null == undefined
Es werden jedoch zwei verschiedene Typen betrachtet. Während undefined ein eigenständiger Typ ist, wird null als spezieller Objektwert betrachtet. Sie können dies sehen, indem Sie typeof () verwenden, das eine Zeichenfolge zurückgibt, die den allgemeinen Typ einer Variablen darstellt:
var a;
WScript.Echo(typeof(a));
var b = null;
WScript.Echo(typeof(b));
Das Ausführen des obigen Skripts führt zu der folgenden Ausgabe:
undefined
object
Unabhängig davon, ob es sich um unterschiedliche Typen handelt, verhalten sie sich immer noch gleich, wenn Sie versuchen, auf ein Mitglied eines der beiden zuzugreifen, z. B., dass sie eine Ausnahme auslösen. Mit WSH werden Sie sehen, dass der gefürchtete "'varname' ist null oder kein Objekt" und das ist, wenn Sie Glück haben (aber das ist ein Thema für einen anderen Artikel).
Sie können eine Variable explizit als undefiniert festlegen, aber ich rate dringend davon ab. Ich empfehle, nur Variablen auf null zu setzen und den Wert für Dinge, die Sie vergessen haben, undefiniert zu lassen. Gleichzeitig ermutige ich Sie wirklich, immer jede Variable festzulegen. JavaScript hat eine andere Bereichskette als die Sprachen im C-Stil, die selbst erfahrene Programmierer leicht verwirrt. Das Setzen von Variablen auf Null ist der beste Weg, um darauf basierende Fehler zu vermeiden.
Eine andere Instanz, in der ein undefiniertes Popup angezeigt wird, ist die Verwendung des Löschoperators. Diejenigen von uns aus einer C-Welt könnten dies fälschlicherweise als Zerstörung eines Objekts interpretieren, aber es ist nicht so. Mit dieser Operation wird ein Index aus einem Array oder ein Mitglied aus einem Objekt entfernt. Bei Arrays wirkt sich dies nicht auf die Länge aus, sondern darauf, dass der Index jetzt als undefiniert betrachtet wird.
var a = [ 'a', 'b', 'c' ];
delete a[1];
for (var i = 0; i < a.length; i++)
WScript.Echo((i+".) "+a[i]);
Das Ergebnis des obigen Skripts ist:
0.) a
1.) undefined
2.) c
Sie erhalten auch eine undefinierte Rückgabe, wenn Sie einen Index oder ein Mitglied lesen, das noch nie existiert hat.
Der Unterschied zwischen null und undefiniert ist: JavaScript setzt niemals etwas auf null, das ist normalerweise das, was wir tun. Während wir Variablen auf undefiniert setzen können, bevorzugen wir null, da dies nie für uns getan wird. Wenn Sie debuggen, bedeutet dies, dass alles, was auf null gesetzt ist, von Ihnen selbst und nicht von JavaScript ausgeführt wird. Darüber hinaus sind diese beiden Sonderwerte nahezu gleichwertig.
null
Wert in JavaScript?