Die meisten Computersprachen haben einen und nur einen Wert, der „none“ darstellt, z. B. NULL in der C-Sprache, null in der Java-Sprache, None in der Python-Sprache und Null in der Ruby-Sprache. Etwas seltsam ist, dass die JavaScript-Sprache tatsächlich zwei Werte hat, die „nichts“ darstellen: undefiniert und null. Warum ist das so?
1. Ähnlichkeit
Um ehrlich zu sein, weisen Sie in JavaScript eine Variable zu undefiniert oder null zu , es gibt 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
Kürzlich habe ich dieses Problem zufällig entdeckt, als ich das neue Buch "Speaking JavaScript"< gelesen habe 🎜> Die Antwort!
Es stellte sich heraus, dass dies mit der Geschichte von JavaScript zusammenhängt. AlsJavaScript 1995 geboren wurde, wurde zunächst wie bei Java nur Null als Wert für „none“ festgelegt.
Gemäß der Tradition der C-Sprache ist null so konzipiert, dass es automatisch in 0 konvertiert wird.Number(null) // 0 5 + null // 5
3. Ursprüngliches Design
Die ursprüngliche Version von JavaScript unterscheidet sich wie folgt: null ist ein Objekt, das „none“ darstellt und konvertiert wird zu einem numerischen Wert ist 0; undefiniert ist ein primitiver Wert, der „keine“ darstellt, und ist NaN, wenn er in einen numerischen Wert umgewandelt wird.Number(undefined) // NaN 5 + undefined // NaN
4. Heutige Verwendung
In der Praxis erwies sich die obige Unterscheidung jedoch bald als nicht durchführbar. 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 einer Funktion bedeutet dies, dass der Parameter der Funktion kein Objekt ist. (2) dient als Endpunkt der Objektprototypkette.Object.getPrototypeOf(Object.prototype) // null
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 detaillierte Inhalt vonDer Unterschied zwischen undefiniert und null in JavaScript (ausführliche Erklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!