In JavaScript gibt es zwei Werte, die im Grunde sagen: "Ich existiere nicht" - undefinedund null.
Eine Eigenschaft, der ein Programmierer nichts zugewiesen hat , muss explizit zugewiesen werden, damit undefinedeine Eigenschaft wird .nullnull
Ich dachte einmal, dass es einen Bedarf gibt, nullweil undefinedes sich um einen primitiven Wert und nullein Objekt handelt. Es ist nicht, auch wenn typeof nullergeben wird 'object': Eigentlich beide primitive Werte sind - was bedeutet weder , undefinednoch nullkann 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 falsein 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 undefinedund nullwenn 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, nulldas undefinedstattdessen nicht ausgedrückt werden kann .
Der allgemeine Konsens scheint also zu sein, dass undefined"es gibt keine solche Eigenschaft" nullbedeutet, 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 undefinedist 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 inOperator oder einen anderen verwenden hasOwnProperty(). Also noch einmal: Was ist die praktische Verwendung für separate Werte für undefinedund null?
Ich verwende es tatsächlich, undefinedwenn ich die Werte von Eigenschaften deaktivieren möchte, die nicht mehr verwendet werden, die ich aber nicht möchte delete. Soll ich nullstattdessen verwenden?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.Nein, undefinedsagt nur das.
undefined.