Heim Web-Frontend js-Tutorial Erkundung der Abgründe von Null und Undefiniert in JavaScript

Erkundung der Abgründe von Null und Undefiniert in JavaScript

Dec 16, 2016 am 10:15 AM

Die Abgründe von Null und Undefiniert in Javascript erkunden

Bei der Diskussion primitiver Datentypen in Javascript kennen die meisten Leute die Grundlagen, von String, Zahl bis Boolean. Diese primitiven Typen sind ziemlich einfach und verhalten sich wie der gesunde Menschenverstand. Dieser Artikel konzentriert sich jedoch mehr auf die einzigartigen primitiven Datentypen Null und Undefiniert und darauf, was sie so ähnlich und dennoch paradox macht.

Null und Undefiniert verstehen

In JavaScript ist null ein Literal und ein Schlüsselwort in der Sprache, das zur Darstellung nicht erkannter Objektwerte verwendet wird. Mit anderen Worten bedeutet dies „kein Wert“. Obwohl ähnlich, stellt undefiniert tatsächlich die Nichtexistenz eines Werts dar. Sie sind völlig unveränderlich, haben keine Eigenschaften oder Methoden und können ihren Eigenschaften keine Werte zuweisen. Tatsächlich führt der Versuch, auf eine Eigenschaft zuzugreifen oder diese zu definieren, zu einem TypeError. Wie der Name schon sagt, handelt es sich um völlig ungültige Werte.

Boolesche Werte, die durch keinen Wert dargestellt werden, sind falsch, was bedeutet, dass sie in einem bedingten Kontext, wie etwa einer if-Anweisung, als falsch ausgewertet werden. Verwenden Sie den Gleichheitsoperator (==), um diese beiden Werte mit anderen falschen Werten zu vergleichen, außer sich selbst:

null == 0; // falseundefined == ""; falsenull == false ; // falseundefined == false; // falsenull == undefiniert; // true

Trotz dieser und anderer Ähnlichkeiten sind null und undefiniert nicht gleichwertig. Jedes ist ein eindeutiges Mitglied seines eigenen Typs, undefiniert ist der undefinierte Typ und null ist der Null-Typ. Vergleichen Sie diese beiden Werte mit dem Gleichheitsoperator (===), der erfordert, dass beide Typen und Werte gleich sind, wie unten gezeigt:

undefiniert === null; // false
Dies ist eine wichtige Unterscheidung, die unterschiedlichen Zwecken und Gründen dient. Um zwischen diesen beiden Werten zu unterscheiden, können Sie sich undefiniert als einen unerwarteten Nullwert und null als einen erwarteten Nullwert vorstellen.

Undefiniert generieren

Es gibt viele Möglichkeiten, Code zu generieren, der einen undefinierten Wert generiert. Dies tritt normalerweise auf, wenn versucht wird, auf einen Wert zuzugreifen, der nicht vorhanden ist. In diesem Fall wird in einer dynamischen und schwach typisierten Sprache wie JavaScript standardmäßig ein undefinierter Wert zurückgegeben, anstatt einen Fehler auszulösen. Jede ohne Anfangswert deklarierte Variable hat den Standardwert undefiniert: var foo; // Der Standardwert ist undefiniert

beim Versuch, auf eine nicht vorhandene Objekteigenschaft oder ein Array-Element zuzugreifen, wird ein zurückgegeben undefinierter Wert:

var array = [1, 2, 3]; var foo = array.foo; // Das foo-Attribut existiert nicht, gibt undefiniert zurückvar item = array[5]; Es gibt kein Element mit Index 5, geben Sie undefiniert zurück

Wenn die Rückgabeanweisung der Funktion weggelassen wird, geben Sie undefiniert zurück:

var value = (function(){})() ; // Undefiniert zurückgeben

Das Ergebnis ist ein undefinierter Parameterwert, wenn die Funktion aufgerufen wird:

(function(undefiniert){ // Der Parameter ist undefiniert})();

Der Void-Operator kann auch einen undefinierten Wert zurückgeben. Bibliotheken wie Underscore verwenden es als defensive Typprüfung, da es unveränderlich ist und man sich darauf verlassen kann, dass es in jedem Kontext undefiniert zurückgibt:

function isUndefined(obj){ return obj === void 0;}

Schließlich ist undefiniert eine vordefinierte globale Variable (im Gegensatz zum Schlüsselwort null), die auf den undefinierten Wert initialisiert wird:

'undefiniert' in Fenster; // true

In ECMAScript 5 ist diese Variable schreibgeschützt, was vorher nicht der Fall war.

Null-Anwendungsfälle

Die Anwendungsfälle von Null sind der Hauptaspekt, der es anders macht, da Null im Gegensatz zu undefiniert als nützlicher angesehen wird. Aus diesem Grund gibt der Operator „typeof“ „Objekt“ zurück, wenn er auf einen Nullwert angewendet wird. Der ursprüngliche Grundgedanke war und ist, dass eine Nullreferenz normalerweise verwendet wird, da ein Nullobjekt erwartet wird, genau wie ein Platzhalter. Dieses Verhalten von typeof wurde als Fehler bestätigt, und obwohl ein Fix vorgeschlagen wurde, wurde dieser aus Gründen der Abwärtskompatibilität unverändert gelassen. Aus diesem Grund setzt die JavaScript-Umgebung niemals einen Wert auf Null; dies muss programmgesteuert erfolgen. In der MDN-Dokumentation heißt es: In der API wird oft null erwartet, wenn Objekte abgerufen werden, aber es gibt kein zugehöriges Objekt. Dies gilt für das DOM, das sprachunabhängig ist und außerhalb des Geltungsbereichs der ECMAScript-Spezifikation liegt. Da es sich um eine externe API handelt, wird beim Versuch, ein nicht vorhandenes Element abzurufen, ein Nullwert zurückgegeben, der nicht undefiniert ist. Im Allgemeinen ist Null fast immer die beste Wahl, wenn Sie einer Variablen oder Eigenschaft einen unveränderlichen Wert zuweisen, ihn an eine Funktion übergeben oder Null von einer Funktion zurückgeben müssen. Kurz gesagt: JavaScript verwendet undefiniert und Programmierer sollten null verwenden. Ein weiterer möglicher Anwendungsfall für null, der ebenfalls als bewährte Methode gilt, besteht darin, eine Variable explizit als ungültig zu kennzeichnen (Objekt = null), wenn eine Referenz nicht mehr erforderlich ist. Durch die Zuweisung eines Nullwerts wird die Referenz effektiv gelöscht. Unter der Annahme, dass das Objekt nicht von anderem Code referenziert wird, wird eine Garbage Collection angegeben, um sicherzustellen, dass der Speicher zurückgewonnen wird.

Graben Sie tiefer

Was null und undefiniert zu Schwarzen Löchern macht, ist nicht nur ihr Verhalten, sondern auch die Art und Weise, wie sie intern in der JavaScript-Umgebung behandelt werden. Sie scheinen oft nicht die gleichen Eigenschaften zu haben wie andere native oder integrierte Objekte. In ES5 ist die Object.PRototype.toString-Methode zum De-facto-Typprüfungsstandard geworden, der sich als konsistent für null und undefiniert erwiesen hat: Object.prototype.toString.call(null); // [object Null]Object .toString.call(undefiniert); // [object Undefiniert]

Die Methode Object.prototype.toString ruft jedoch nicht tatsächlich die interne [[Class]]-Eigenschaft von null oder die Öffentlichkeit von ab undefinierter Konstruktor. Laut Dokumentation laufen während des aufgerufenen Prozesses die folgenden Schritte ab:

Wenn der Wert undefiniert ist, geben Sie „[object Undefiniert]“ zurück.

Wenn dieser Wert null ist, geben Sie „[Objekt Null]“ zurück.

O sei O der Ergebniswert des Aufrufs von ToObject, während dieser Wert als Parameter übergeben wird.

Klasse sei der Wert der internen Eigenschaft [[Klasse]] von O.

Das zurückgegebene Ergebnis ist der Zeichenfolgenwert des Ergebnisses der Verkettung der drei Zeichenfolgen „[Objekt“, Klasse und „]“.

Diese Methode führt einen einfachen String-Rückgabewert aus, wenn sie null oder undefinierte und andere objekteinheitliche Funktionen erkennt. Dies ist in der gesamten Spezifikation üblich, da die meisten Methoden ein einfaches Catch und Return enthalten, wenn Null- und undefinierte Werte angetroffen werden. Tatsächlich gibt es keinen Hinweis darauf, dass sie interne Eigenschaften enthalten, die mit nativen Objekten verknüpft sind. Es ist, als wären sie keine Objekte. Ich bin gespannt, was passieren würde, wenn es tatsächlich eine explizite Lösung in der nativen Umgebung von JavaScript gäbe? Vielleicht kann sich jemand engagieren, der mit einer Implementierung besser vertraut ist.

Fazit

Egal wie ungewöhnlich diese nativen Objekte auch sein mögen, verstehen Sie den Unterschied zwischen null und undefiniert und ihre unterschiedlichen Rollen in der Sprachgrundlage von JavaScript. Möglicherweise bringt es Ihre Anwendung nicht zum Durchbruch, aber im Allgemeinen wird es sich nur auf lange Sicht während der Entwicklung und beim Debuggen als vorteilhaft erweisen.

Das Obige ist der Inhalt der Erkundung der Abgründe von Null und Undefiniert in JavaScript. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lösung für PHP-Hinweis: Undefinierte Eigenschaft: Lösung für PHP-Hinweis: Undefinierte Eigenschaft: Jun 22, 2023 pm 02:48 PM

Beim Schreiben von Code in PHP kann es zu der Fehlermeldung „Hinweis: Undefinierte Eigenschaft“ kommen. Dieser Fehler bedeutet, dass wir auf eine undefinierte Eigenschaft zugreifen, normalerweise weil die Eigenschaft im Code nicht initialisiert wurde. Wie kann man dieses Problem lösen? Hier sind einige mögliche Lösungen: Eigenschaften initialisieren Dies ist der einfachste Weg, dieses Problem zu lösen. Durch die explizite Initialisierung einer Eigenschaft im Code wird sichergestellt, dass sie vor der Verwendung definiert wird. Zum Beispiel: Klasse

TypeError: Die Eigenschaft „$XXX' von undefiniert in Vue kann nicht gelesen werden. Wie gehe ich damit um? TypeError: Die Eigenschaft „$XXX' von undefiniert in Vue kann nicht gelesen werden. Wie gehe ich damit um? Nov 25, 2023 pm 12:14 PM

Wenn Sie bei der Entwicklung mit Vue.js häufig auf die Fehlermeldung „TypeError: Cannotreadproperty'$XXX'ofundefined“ stoßen, wie sollten Sie damit umgehen? In diesem Artikel werden die Ursachen dieses Fehlers und seine Behebung erläutert. Die Ursache des Problems liegt darin, dass wir bei der Verwendung von Vue.js dies häufig zum Aufrufen von Methoden von Vue-Komponenten verwenden, z. B.: exportdefault{data()

Was ist der Unterschied zwischen null und NULL in der C-Sprache? Was ist der Unterschied zwischen null und NULL in der C-Sprache? Sep 22, 2023 am 11:48 AM

Der Unterschied zwischen null und NULL in der C-Sprache ist: null ist eine Makrodefinition in der C-Sprache, die normalerweise zur Darstellung eines Nullzeigers verwendet wird und zum Initialisieren von Zeigervariablen oder zum Bestimmen, ob der Zeiger in einer bedingten Anweisung null ist, verwendet werden kann. NULL ist eine Makrodefinition in der C-Sprache. Eine vordefinierte Konstante in, die normalerweise zur Darstellung eines Nullwerts verwendet wird und zur Darstellung eines Nullzeigers, eines Nullzeigerarrays oder eines Nullstrukturzeigers verwendet wird.

Was bedeuten undefiniert und null? Was bedeuten undefiniert und null? Nov 20, 2023 pm 02:39 PM

In JavaScript stellen sowohl undefiniert als auch null das Konzept von „nichts“ dar: 1. undefiniert stellt eine nicht initialisierte Variable oder eine nicht vorhandene Eigenschaft dar. Wenn eine Variable deklariert, ihr aber kein Wert zugewiesen ist, ist der Wert der Variablen undefiniert. Beim Zugriff auf Eigenschaften, die nicht im Objekt vorhanden sind, ist der zurückgegebene Wert ebenfalls undefiniert. 2. Null stellt eine leere Objektreferenz dar. In einigen Fällen kann die Objektreferenz auf Null gesetzt werden, um den von ihr belegten Speicher freizugeben.

was ist undefiniert was ist undefiniert Jul 31, 2023 pm 02:28 PM

undefiniert stellt einen Zustand dar, in dem ein Wert oder eine Variable nicht existiert oder undefiniert ist. Er kann als Standardwert verwendet werden, um festzustellen, ob einer Variablen ein Wert zugewiesen wurde, und kann auch zum Festlegen von Standardparameterwerten verwendet werden. Obwohl undefiniert in verschiedenen Programmiersprachen unterschiedliche Bedeutungen und Verwendungen haben kann, kann uns das Verständnis des Konzepts von undefiniert helfen, Programme besser zu verstehen und zu schreiben.

Wie behebe ich den Fehler „undefiniert: path.Join' in Golang? Wie behebe ich den Fehler „undefiniert: path.Join' in Golang? Jun 24, 2023 pm 01:12 PM

In der Go-Sprache ist das Pfadpaket eines der wichtigen Werkzeuge zur Verarbeitung von Dateipfaden. Die Funktion path.Join() kann mehrere Pfade zu einem vollständigen Pfad zusammenfassen. Manchmal wird jedoch die Fehlermeldung „undefiniert: path.Join“ angezeigt. Was sollten Sie tun? Hier sind einige gängige Lösungen: Überprüfen Sie die Importanweisung. Zunächst müssen Sie bestätigen, dass Sie das Pfadpaket korrekt importiert haben. In der Go-Sprache ist dies beim Importieren eines Pakets möglich

Wann sollten null und undefiniert verwendet werden? Wann sollten null und undefiniert verwendet werden? Nov 13, 2023 pm 02:11 PM

Sowohl null als auch undefiniert weisen auf einen fehlenden Wert oder einen undefinierten Zustand hin. Je nach Verwendungsszenario gibt es einige Leitprinzipien für die Verwendung von null oder undefiniert: 1. Wenn Sie klar angeben müssen, dass eine Variable leer oder ungültig ist, müssen Sie Folgendes tun: kann null verwenden; 2. Wenn eine Variable deklariert wurde, aber noch kein Wert zugewiesen wurde, wird sie standardmäßig auf undefiniert gesetzt. 3. Wenn Sie überprüfen müssen, ob eine Variable leer oder undefiniert ist, verwenden Sie den strikten Gleichheitsoperator „=“. ==" um festzustellen, ob die Variable null oder undefiniert ist. .

Was ist der Unterschied zwischen null und undefiniert? Was ist der Unterschied zwischen null und undefiniert? Nov 08, 2023 pm 04:43 PM

Der Unterschied zwischen null und undefiniert ist: 1. Semantische Bedeutung; . Leistung bei der JSON-Serialisierung; 9. Beziehung zu Typen. Detaillierte Einführung: 1. Semantische Bedeutung: Null bedeutet normalerweise, dass diese Variable keinen gültigen Objektwert hat, während undefiniert normalerweise bedeutet, dass der Variablen kein Wert zugewiesen wurde oder das Objekt dieses Attribut nicht hat. 2. Verwendungsszenarien , usw.

See all articles