In JavaScript, questo è indicato come undefined
, che è un valore sentinella univoco, distinto da null
.
Ottieni undefined
valutando la variabile globale undefined
, o una proprietà di un oggetto, che non è definita o valutando una dichiarazione, che non restituisce un valore, come le chiamate alle funzioni, che non restituire nulla, o un blocco o una dichiarazione di variabile (anche se questi due non sono espressioni valide, quindi lo incontrerai solo in un REPL JavaScript).
Quando il valore undefined
è forzato ad essere un Object
diventa null
, ma non è null
.
Ecco un piccolo esempio:
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
Penso che sia ragionevole chiamare valori non definiti (a differenza di quelli definiti come null
) indefiniti, se questa è la tua domanda. L'utilizzo di un valore sentinella univoco per comunicare l'assenza di un valore definito è una soluzione praticabile per i linguaggi dinamici, anche se è spesso capita male.