In JavaScript gibt es zwei Werte, die im Grunde sagen: "Ich existiere nicht" - undefined
und null
.
Eine Eigenschaft, der ein Programmierer nichts zugewiesen hat , muss explizit zugewiesen werden, damit undefined
eine Eigenschaft wird .null
null
Ich dachte einmal, dass es einen Bedarf gibt, null
weil undefined
es sich um einen primitiven Wert und null
ein Objekt handelt. Es ist nicht, auch wenn typeof null
ergeben wird 'object'
: Eigentlich beide primitive Werte sind - was bedeutet weder , undefined
noch null
kann von einer Konstruktor - Funktion zurückgegeben werden, da beide in ein leeres Objekt umgewandelt wird (man hat einen Fehler proclaim Fehler in Konstrukteuren zu werfen).
Sie bewerten beide auch false
in booleschen Kontexten. Der einzige wirkliche Unterschied, den ich mir vorstellen kann, ist, dass einer in numerischen Kontexten bewertet NaN
, der andere 0
.
Warum gibt es also beides undefined
und null
wenn dies nur Programmierer verwirrt, die fälschlicherweise nachsehen null
, ob eine Eigenschaft festgelegt wurde oder nicht?
Was ich gerne wissen würde, ist, ob jemand ein vernünftiges Beispiel hat, bei dem es notwendig ist, etwas zu verwenden, null
das undefined
stattdessen nicht ausgedrückt werden kann .
Der allgemeine Konsens scheint also zu sein, dass undefined
"es gibt keine solche Eigenschaft" null
bedeutet, während "die Eigenschaft existiert, aber keinen Wert hat" bedeutet.
Ich könnte damit leben, wenn JavaScript-Implementierungen dieses Verhalten tatsächlich erzwingen würden - aber es undefined
ist ein vollkommen gültiger primitiver Wert, sodass er leicht vorhandenen Eigenschaften zugewiesen werden kann, um diesen Vertrag zu brechen. Wenn Sie also sicherstellen möchten, dass eine Eigenschaft vorhanden ist, müssen Sie den in
Operator oder einen anderen verwenden hasOwnProperty()
. Also noch einmal: Was ist die praktische Verwendung für separate Werte für undefined
und null
?
Ich verwende es tatsächlich, undefined
wenn ich die Werte von Eigenschaften deaktivieren möchte, die nicht mehr verwendet werden, die ich aber nicht möchte delete
. Soll ich null
stattdessen verwenden?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.
Nein, undefined
sagt nur das.
undefined
.