Heim >Web-Frontend >js-Tutorial >Erläutern Sie den Unterschied zwischen undefiniert und null

Erläutern Sie den Unterschied zwischen undefiniert und null

韦小宝
韦小宝Original
2018-03-14 14:56:081630Durchsuche

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!

Stellungnahme:
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