undefined

Sommario

La variabile globale undefined rappresenta il valore primitivo undefined. È uno dei valori primitivi di JavaScript.

Property attributes of undefined
Writable no
Enumerable no
Configurable no

Sintassi

undefined

Descrizione

undefined è una proprietà dell'oggetto globale, ossia una variablie nel contesto globale. Il valore iniziale di undefined è il valore primitivo undefined.

Secondo la specifica ECMAScript5, undefined è accessibile in sola lettura (implementato in JavaScript 1.8.5 / Firefox 4).

Una variabile alla quale non è ancora stato assegnato un valore è di tipo undefined. Un metodo o una dichiarazione restituisce undefined se la variabile che viene valutata non ha un valore assegnato. Una funzione restituisce undefined se non viene restituito un altro valore.

Siccome undefined non è una parola riservata, può essere usato come nome di una variabile in qualsiasi contesto, eccetto quello globale.

// logs "foo string"
(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })();

// logs "foo string"
(function(undefined){ console.log(undefined, typeof undefined); })('foo');

Esempi

undefined e l'uguaglianza ristretta

Puoi usare undefined e gli operatori "strettamente uguale" e "strettamente diverso" per determinare se ad una variabile è stato assegnato un valore. In questo codice, la variabile x non è definita, qundi l'istruzione if viene valutata vera.

var x;

x === undefined; // true
Nota: Qui devono essere utilizzati gli operatori di uguaglianza stretta, perché x == undefined è vero anche se x è null, mentre confrontandoli con l'ugualianza stretta no. null e undefined non sono equivalenti. Vedi gli operatori di comparazione per altri dettagli.

undefined e l'operatore typeof

In alternativa può anche essere usato l'operatore typeof:

var x;

typeof x === 'undefined'; // true

Un motivo per cui usare l'operatore typeof è che se la variabile non  stata dichiarata non viene generato un errore.

// x non è ancora stata dichiarata

typeof x === "undefined"; // viene valutata come vera, senza generare erroi

x === undefined;          // genera un ReferenceError

Comunque questa tecnica dovrebbe essere evitata. JavaScript è un linguaggio staticamente contestualizzato, quindi si può sapere se una variabile è stata dichiarata in un contesto guardando in quelli che lo contengono. L'unica eccezione è il contesto globale, che è rappresentato dall'oggetto globale: quindi per sapere se esiste una variabile basta controllare se esiste una proprietà nell'oggetto globale (per esempio usando l'operatore in o il metodo hasOwnProperty)

// x non è ancora stata dichiarata

"x" in window;              // false
window.hasOwnProperty("x"); // false

var x = 3;

"x" in window;              // true
window.hasOwnProperty("y"); // true

undefined e l'operatore void

Una terza alternativa è l'operatore <code>void</code>.

var x;
x === void 0; // true

// y non è ancora stata dichiarata
y === void 0; // genera un ReferenceError (a differenza di `typeof`)

Specifications

Specification Status Comment
ECMAScript 1st Edition. Standard Definizione iniziale. Implementato in JavaScript 1.3
ECMAScript 5.1 (ECMA-262)
The definition of 'undefined' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'undefined' in that specification.
Standard  

Compatibilità con i browser

Funzionalità Chrome Firefox (Gecko) Internet Explorer Opera Safari
Supporto di base (Yes) (Yes) (Yes) (Yes) (Yes)
Funzionalità Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Supporto di base (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

 

Tag del documento e collaboratori

 Hanno collaborato alla realizzazione di questa pagina: AndySky21, nicolo-ribaudo
 Ultima modifica di: AndySky21,