In JavaScript haben wir etwas, das als undefiniert bezeichnet wird . Ich habe etwas gesagt, weil ich wirklich nicht weiß, ob es sich um eine Basisklasse, eine integrierte Variable, ein Schlüsselwort oder etwas anderes handelt. Ich weiß nur, dass es da ist.
Um es in Aktion zu sehen, können Sie einfach schreiben:
undefined;
typeof undefined;
Kann mir bitte jemand erklären, warum dieses Ding in JavaScript eingefügt wurde? Wir haben null
Wert in dieser Sprache, daher sollte es nicht so sein null
. In anderen Sprachen setzen wir den Wert einer Eigenschaft oder Variablen einfach auf null, wenn wir ihn nicht kennen. Hier können wir das Gleiche tun.
Wie können wir dieses Ding in JavaScript verwenden?
javascript
language-design
Saeed Neamati
quelle
quelle
undefined
und wann zu verwendennull
Antworten:
Es gibt ZWEI Dinge, die Sie über undefinierte verstehen müssen ...
undefined
, der nur einen Wert haben kann .undefined
Lesen Sie nun Folgendes sorgfältig durch ...
Es gibt so viele Werte vom Typ
number
(10, 10.01, 1e1). Es kann jedoch nur einen Wert vom Typ gebenundefined
, und dieser Wert wird in der Variablen gespeichertundefined
. Dieser Wert hat NO literal Darstellung - beispielsweise Zahlenwerte1
,100
,1e-1
sind alle Literale der Typennummer, aber die in der Variable gespeicherten Wertundefined
hat kein Literal Form.undefined
ist eine Variable, nur eine normale Variable, die JavaScript deklariert und ihr den Wert typeundefined
im globalen Bereich zuweist . Sie können also Folgendes tun ...undefined
, können Sie den Wert des Typsundefined
durch den Ausdruck generieren,void 0
dessen einziger Zweck darin besteht, einen Wert vom Typ zurückzugebenundefined
.NEIN. Genauso wie niemand erklären kann, warum nicht deklarierte Variablen nicht lokal, sondern global angewendet werden. Sie müssen sich nur darin schulen, es intelligent zu nutzen, anstatt zu versuchen, Rechtfertigungen für seine Existenz zu finden.
Obwohl
null
es Dinge kannundefined
, ist es mehr oder weniger mitobjects
Skalaren verbunden als mit Skalaren. In der Tat betrachtetnull
sich JavaScript als Objekt -typeof null
gibt "Objekt" zurück.Meiner Meinung nach besteht das Endergebnis darin, NICHT zu versuchen, die absoluten Zwecke von
undefined
undnull
- zu begründen und sie in Ihrem Code verständlich zu verwenden, damit Ihr Code lesbar, wartbar und wiederverwendbar ist.quelle
the bottom line is to NOT try to reason the absolute purposes of undefined and null
, scheint, dass JavaScript ein bisschen weniger als eine logische Sprache ist und wir uns einfach daran gewöhnen müssen, wie beim Experimentieren einer neuen Welt.undefined
". Wertet tatsächlichvoid
einen Ausdruck aus, ignoriert den Rückgabewert und gibt denundefined
Wert zurück. Wie für die Unterschiede.undefined
wird von der JS-Engine verwendet, um zu sagen, dass dieses Ding keinen Wert hat.null
wird von DIR benutzt, um zu sagen, dass dieses Ding keinen Wert hat. Es gibt eine klare Unterscheidung.undefined = 100; typeof undefined;
Gibt für mich "undefined" zurück. Wenn Sie versuchen, null zuzuweisen, wird eine Fehlermeldung angezeigt. Ich wollte das nur für zukünftige Leser klarstellen.Es tut uns leid, dass Sie eine ältere Frage beantwortet haben, aber der Grund, warum Sie sowohl undefiniert als auch null benötigen, ist einfach: In einer prototypbasierten Enten-Typisierungssprache müssen Sie unbedingt zwischen "Dieses Objekt definiert keinen Wert für X" und "Dieses Objekt sagt, X ist" unterscheiden nichts / null / leer ".
Ohne diese Funktion gibt es keine Möglichkeit, die Prototypenkette zu durchlaufen, sodass die Vererbung nicht funktionieren kann. Sie müssen in der Lage sein, festzustellen, dass obj.someProp undefiniert ist, damit Sie sich obj.prototype.someProp ansehen und die Kette weiterleiten können, bis Sie einen Wert finden. Wenn obj.someProp null zurückgeben würde, wäre es unmöglich zu wissen, ob es wirklich null ist oder nur "Schau dir meinen Prototyp an" bedeutet. Der einzige andere Weg, dies zu umgehen, besteht darin, hinter den Kulissen etwas klobige Magie zu injizieren, die Ihre Fähigkeit beeinträchtigt, mit den Prototypenketten zu fusseln und verschiedene andere Teile der schwarzen Magie von JS auszuführen.
Wie ein Großteil von Javascript wirkt die Idee von undefiniert und null zunächst wackelig und dumm, später absolut brillant (dann zurück zu wackelig und dumm, aber mit einer vernünftigen Erklärung).
Eine Sprache wie C # wird nicht kompiliert, wenn Sie auf eine nicht vorhandene Eigenschaft zugreifen, und andere dynamische Sprachen lösen zur Laufzeit häufig Ausnahmen aus, wenn Sie eine nicht vorhandene Eigenschaft berühren. Dies bedeutet, dass Sie spezielle Konstrukte verwenden müssen, um sie zu testen. Plus-Klassen bedeuten, dass Sie beim Instanziieren eines Objekts bereits seine Vererbungskette und alle Eigenschaften kennen - in JS kann ich einen Prototyp in 15 Schritten der Kette ändern, und diese Änderungen werden für vorhandene Objekte angezeigt.
quelle
Es gibt eine globale Variable
undefined
, die auf den undefinierten Wert gesetzt ist. Böse Leute können es auf etwas anderes setzen, also ist es wahrscheinlich am besten, ihm nicht zu vertrauen.typeof undeclaredVariable == 'undefined'
Wenn Sie versuchen, den Wert einer unterdefinierten Variablen zu lesen, werden Sie geworfenReferenceError
.)null
ist subtil kaputt, weiltypeof null == 'object'
. Ich weiß nicht warum wir habenundefined
undnull
wahrscheinlich einen historischen Unfall.quelle
Nun,
undefined
ist ein Sentinel-Wert, der durch Auswerten von etwas erhalten wird, das nicht definiert ist, im Gegensatz zunull
dem Wert, der genau definiert ist, um nichts darzustellen .So ist beispielsweise der Rückgabewert einer Funktion, die keinen Rückgabewert definiert, undefiniert. Der Wert einer Eigenschaft, die nicht für ein Objekt definiert ist, ist undefiniert. Der Rückgabewert einer Anweisung, die kein Ausdruck ist, ist undefiniert (obwohl dies nur in der Konsole angezeigt wird).
Bitte beachten Sie , dass Sie können eine Funktion erstellen, die explizit zurückkehrt
undefined
und Sie können explizit eine Eigenschaft mit dem Wert definierenundefined
auf einem Objekt, denn am Ende ist es ein gültiger Wert ist. Sie würden dies tun, um explizit zu kommunizieren, dass etwas nicht definiert ist .Man könnte sich die Beziehung von
undefined
undnull
als die zwischenNaN
und vorstellen0
.quelle
undefined
istvoid
?void
in JavaScript ist ein unärer Operator , der jedes Argument akzeptiert und den Wert zurückgibtundefined
.