Die vorherigen Wörter
In der allgemeinen Programmiersprachen bedeutet nur Null leer, aber der JavaScript -Designer Brendan Eich hat eine undefinierte gestaltet, die zweifellos die Komplexität des Programms erhöht, aber es gibt einen bestimmten Grund dafür. In diesem Artikel werden Undefined und Null in JavaScript im Detail vorgestellt
Historische Gründe
Als JavaScript 1995 geboren wurde, wurde es ursprünglich wie Java eingestellt, nur Null wurde als Wert festgelegt, der "keine" angab. Nach der Tradition der C -Sprache soll Null automatisch auf 0 wechseln
JavaScript -Designer Brendan Eich glaubt jedoch, dass dies aus zwei Gründen nicht ausreicht. Erstens wird Null als Objekt wie in Java behandelt. JavaScript -Werte sind jedoch in zwei Kategorien unterteilt: primitive Typen und Objekttypen. Brendan Eich glaubt, dass der Wert, der "keine" bedeutet, am besten kein Objekt ist. Zweitens enthielt die anfängliche Version von JavaScript keinen Fehlerbehandlungsmechanismus. Wenn der Datentyp -Missverhältnis auftritt, wandelt es häufig automatisch den Typ um oder fällt lautlos aus. Brendan Eich glaubt, dass es schwierig ist, Fehler zu finden, wenn NULL automatisch auf 0 wird, ist schwierig, Fehler zu finden
Daher entwarf Brendan Eich eine andere undefinierte. Es unterscheidet es wie folgt: Null ist ein Objekt, das "keine" darstellt, die 0 ist, wenn sie in einen numerischen Wert konvertiert wird; Undefiniert ist ein ursprünglicher Wert, der "None" darstellt, der in einem numerischen Wert in NAN konvertiert wird
Derzeit sind null und undefiniert, im Grunde genommen synonym, beide sind primitive Typen, und es gibt nur einige geringfügige Unterschiede.
undefiniert
Der undefinierte Typ hat nur einen Wert, der undefiniert ist. Wenn die deklarierte Variable nicht initialisiert wird, ist der Standardwert der Variablen undefiniert. Im Allgemeinen bedeutet undefinierter, dass die Variable nicht initialisiert wird
var test; // undefinedConsole.log (test == undefined); // truevar test = undefiniert; // undefiniert
Bei Variablen, die nicht deklariert wurden, kann nur ein Vorgang ausgeführt werden, wobei der Typeof -Operator ihre Datentypen erfasst. Dies führt jedoch zu einem Fehler im strengen Modus
Typof (Test); // undefiniert
【Szenenauftritt】
【1】 Nicht bewertete Variablen deklariert
【2】 Holen Sie sich die Attribute, die im Objekt nicht existieren
【3】 Ausführung Ergebnis der Funktion ohne Rückgabewert
【4】 Die Funktionsparameter werden nicht übergeben
【5】 void (Expression)
var i; console.log (i); // undefinedvar o = {}; console.log (op); // undefinedFunction f () {}; console.log (f ()); // undefinedFunction f (x) {return x;} console.log ()); // und definierte Kasse () und undefindefindekonse.【Typ Conversion】】
Boolean (undefiniert): FaleSumber (undefiniert): Nanstring (undefiniert): 'undefiniert'
NULL
Es gibt nur einen Wert für den Null -Typ, der Null ist. Null ist ein Schlüsselwort in der JavaScript -Sprache. Es stellt einen besonderen Wert dar und wird häufig verwendet, um "Nullwert" zu beschreiben.
Logischerweise repräsentiert der Nullwert einen leeren Objektzeiger
[Anmerkung] Null ist ein leerer Objektzeiger, während [] ein leeres Array ist, {} ist ein leeres Objekt, die drei sind unterschiedlich
console.log (typeof null); // 'Objekt'
Obwohl Null und Undefined unterschiedlich sind, repräsentieren beide "leer von Wert", Null repräsentiert "Nullwert" und undefined "undefiniert". Die beiden sind oft austauschbar. Richter Gleichheitsbetreiber == Denken Sie, dass die beiden gleich sind
console.log (null == undefiniert); // true
Da undefinierte und Null keine Konstruktorypen sind, haben sie keine Eigenschaften und Methoden. Verwendung. und [], um auf Mitglieder zuzugreifen, oder Methoden beider Werte erzeugen einen Typfehler.
【Typ Conversion】】
Boolean (null): faleSumber (null): 0string (null): 'null' '
Im Folgenden werde ich den Unterschied zwischen Null und undefiniertem in JavaScript einführen
Undefiniert repräsentiert den Wert, wenn die Variable deklariert, aber nicht initialisiert wird, und Null repräsentiert den Wert, der zum Speichern des Objekts verwendet werden kann, das Objekt jedoch nicht wirklich gespeichert hat. Aus logischer Sicht stellt der Nullwert einen leeren Objektzeiger dar.
In JavaScript (ECMascript -Standard) gibt es 5 Grundtypen: undefined, Null, Boolean, Nummer, Zeichenfolge und ein komplexes Typ -Objekt. Es ist zu sehen, dass Null und Undefined zu verschiedenen Typen gehören. Der Wert, den nicht initialisiert ist, wird von TypeOF als "undefiniert" (String) erkannt, während der Nullwert von TypeOF als "Objekt" (Zeichenfolge) erkannt wird.
Es wird nicht empfohlen, zu irgendeinem Zeitpunkt eine Variable explizit auf undefinierte festzustellen. Wenn die Variable, die das Objekt speichert, das Objekt nicht wirklich gespeichert hat, sollte es auf Null gesetzt werden.
Tatsächlich wird der undefinierte Wert von einem Nullwert abgeleitet. Das ECMAScript -Standard sieht vor, dass der Gleichstellungstest der beiden wahr zurückgegeben werden muss, dh,,
alarm (null == undefiniert); // WAHR