Heim >Web-Frontend >js-Tutorial >Erläutern Sie den Unterschied zwischen undefiniert und null
In diesem Artikel geht es um den Unterschied zwischen undefiniert und null. Wenn Sie den Unterschied zwischen undefiniert und null nicht kennen, schauen wir uns diesen Artikel an . Okay, lassen Sie uns den Unsinn hinter uns lassen und auf den Punkt kommen
Die meisten Computersprachen haben einen und nur einen Wert, der „none“ darstellt, zum Beispiel NULL in der C-Sprache . und in der Java-Sprache null, „None“ in der Python-Sprache und „nil“ in der Ruby-Sprache.
Etwas seltsamerweise hat die JavaScript-Sprache tatsächlich zwei Werte, die „none“ darstellen: undefiniert und null. Warum ist das so?
1. Ähnlichkeit
In JavaScript eine Variable zu undefiniert oder null zuweisen, Um ehrlich zu sein, gibt es fast keinen Unterschied.
var a = undefined; var a = null;
Im obigen Code wird die Variable a undefiniert bzw. null zugewiesen. Die beiden Schreibmethoden sind nahezu gleichwertig.
undefiniert und null werden in der if-Anweisung automatisch in „falsch“ konvertiert, und der Gleichheitsoperator meldet sogar direkt, dass sie gleich sind.
if (!undefined) console.log('undefined is false'); // undefined is false if (!null) console.log('null is false'); // null is false undefined == null // true
Der obige Code zeigt, wie ähnlich die Verhaltensweisen der beiden sind!
Da die Bedeutungen und Verwendungen von undefiniert und null ähnlich sind, warum erhöht dies nicht ohne Grund die Komplexität von JavaScript und bereitet Anfängern Probleme? Die Dart-Sprache, ein Ersatz für die von Google entwickelte JavaScript-Sprache, schreibt eindeutig vor, dass es nur Null und kein Undefiniertes gibt!
2. Historische Gründe
Als ich kürzlich das neue Buch „Speaking JavaScript“ las, entdeckte ich zufällig die Antwort zu dieser Frage!
Es stellte sich heraus, dass dies mit der Geschichte von JavaScript zusammenhängt. Als JavaScript im Jahr 1995 geboren wurde, wurde zunächst wie Java nur Null als Wert für „Nichts“ festgelegt.
Gemäß der Tradition der C-Sprache ist null so konzipiert, dass es automatisch in 0 konvertiert wird.
Number(null) // 0 5 + null // 5
Brendan Eich, der Designer von JavaScript, ist jedoch der Meinung, dass dies aus zwei Gründen nicht ausreicht.
Zunächst einmal wird null wie in Java als Objekt behandelt. Der -Datentyp von JavaScript ist jedoch in zwei Kategorien unterteilt: primitiver Typ (primitiv) und synthetischer Typ (komplex). Brendan Eich ist der Meinung, dass der Wert, der „none“ darstellt, am besten kein Objekt ist.
Zweitens enthielt die ursprüngliche Version von JavaScript keinen Mechanismus zur Fehlerbehandlung. Wenn ein Datentypkonflikt auftritt, wird der Typ häufig automatisch konvertiert oder schlägt stillschweigend fehl. Brendan Eich ist der Meinung, dass es schwierig sein wird, Fehler zu finden, wenn null automatisch in 0 konvertiert wird.
Deshalb hat Brendan Eich ein weiteres Undefiniertes entworfen.
3. Ursprüngliches Design
Die ursprüngliche Version von JavaScript unterscheidet sich wie folgt: null ist ein Objekt, das „none“ darstellt. Bei der Konvertierung in einen numerischen Wert ist er 0; undefiniert ist ein primitiver Wert, der „keine“ darstellt, und bei der Konvertierung in einen numerischen Wert ist er NaN.
Number(undefined) // NaN 5 + undefined // NaN
4. Heutige Verwendung
In der Praxis hat sich die obige Unterscheidung jedoch schnell als nicht umsetzbar erwiesen. Derzeit sind null und undefiniert grundsätzlich synonym, mit nur einigen subtilen Unterschieden.
null bedeutet „kein Objekt“, das heißt, dort sollte kein Wert vorhanden sein. Typische Verwendung ist:
(1) Als Parameter der Funktion bedeutet dies, dass der Parameter der Funktion kein Objekt ist.
(2) dient als Endpunkt der Objektprototypkette.
Object.getPrototypeOf(Object.prototype)// null
undefiniert bedeutet „fehlender Wert“, das heißt, hier sollte ein Wert vorhanden sein, dieser wurde jedoch noch nicht definiert. Typische Verwendung ist:
(1) Wenn eine Variable deklariert, aber kein Wert zugewiesen wird, ist sie gleich undefiniert.
(2) Beim Aufruf der Funktion wird der Parameter, der bereitgestellt werden soll, nicht angegeben und der Parameter ist gleich undefiniert.
(3) Dem Objekt ist kein Attribut zugewiesen und der Wert dieses Attributs ist undefiniert.
(4) Wenn die Funktion keinen Wert zurückgibt, gibt sie standardmäßig undefiniert zurück.
var i; i // undefined function f(x){console.log(x)} f() // undefined var o = new Object(); o.p // undefined var x = f(); x // undefined
Das Obige ist der gesamte Inhalt dieses Artikels. Wenn Sie nicht viel darüber wissen, können Sie beide Seiten problemlos selbst meistern!
Verwandte Empfehlungen:
Javascript verstehen_02_Undefinierte und null_Javascript-Fähigkeiten verstehen
Das obige ist der detaillierte Inhalt vonErläutern Sie den Unterschied zwischen undefiniert und null. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!