In JavaScript wird dies als undefinedeindeutiger Sentinel-Wert bezeichnet, der sich von unterscheidet null.
Sie erhalten undefinedentweder durch Auswerten der globalen Variablen undefinedoder einer Eigenschaft eines Objekts, das nicht definiert ist, oder durch Auswerten einer Anweisung, die keinen Wert zurückgibt, z. B. Aufrufe von Funktionen, die nichts zurückgeben, oder einen Block oder eine Variablendeklaration (obwohl diese beiden keine gültigen Ausdrücke sind, werden Sie diese nur in einer JavaScript-REPL finden).
Wenn der undefinedWert gezwungen Objectwird null, ein zu sein , wird er , aber es ist nicht so null.
Hier ist eine kleine Illustration:
var a = [1, 2, 3];//undefined
a[0];//1
a[4];//undefined
var o = { foo: "123" };//undefined
o.foo;//"123";
o.bar;//undefined
function bar() { return null; };//undefined
bar();//null
function foo() { /*just an empty block*/};//undefined
foo();//undefined
typeof undefined;//"undefined"
typeof null;//"object"
null == undefined;//true - that is because undefined is converted to an object for comparison and thus yields null
null === undefined;//false - because they are not the same
Ich denke, es ist vernünftig, undefinierte Werte (im Gegensatz zu als definiert definierten Werten null) als undefiniert zu bezeichnen, wenn dies Ihre Frage ist. Die Verwendung eines eindeutigen Sentinel-Werts zur Übermittlung des Fehlens eines definierten Werts ist eine praktikable Lösung für dynamische Sprachen, obwohl sie häufig nur unzureichend verstanden wird.