undefined

Este articulo necesita una revisión editorial. Cómo puedes ayudar.

Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

Resumen

La propiedad global undefined representa el valor primitivo undefined. Es uno de los valores primitivos de JavaScript.

Atributos de la propiedad undefined
Sobrescribir No
Numerable No
Configurable No

Sintaxis

undefined

Descripción

undefined es una propiedad del objeto global, es decir, una variable de alcance global. El valor inicial de undefined es el valor primitivo undefined.this needs clarification, but that would require explaining primitive values

En navegadores modernos (JavaScript 1.8.5 / Firefox 4+), undefined es una propiedad no-configurable, no-escribible por la especificación ECMAScript 5. Cuando este no sea el caso, evita sobreescribirlo.

Una variable a la que no se le ha asignado valor es de tipo undefined. Un método o sentencia también devuelve undefined si la variable que se está evaluando no tiene asignado un valor. Una función devuelve undefined si no se ha devuelto un valor.

Aunque es posible usarlo como un identificador (nombre de variable) en otro ámbito que no sea el ámbito globlar (porque undefined no es una palabra reservada), hacerlo es una mala idea que hará tú código difícil de mantener y debugear.

//NO HAGAS ESTO

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

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

Ejemplos

Igualdad estricta y undefined

Puedes usar undefined y los operadores de igualdad y desigualdas estricta para determinar si una variable tiene un valor. En el siguiente código la variable x no está definida, y la sentencia if se evalúa como verdadera.

var x;
if (x === undefined) {
   // se ejecutan estas instrucciones
}
else {
   // estas instrucciones no se ejecutan
}

Nota: El operador de igualdad estricta se debe usar aquí en vez del operador de igualdad estándar, ya que x == undefined también comprueba si x es null, mientras que el de igualdad estricta no. null no equivale a undefined. Vea operadores de comparación para más detalles.

Typeof operador y undefined

Alternativamente se puede usar typeof:

var x;
if (typeof x === 'undefined') {
   // se ejecutan estas instrucciones
}

Una razón para usar typeof es que no devuelve un error si la variable no fue declarada.

// x no fue declarada antes
if (typeof x === 'undefined') { // devuelve true
   //se ejecutan estas instrucciones
}

if (x === undefined) { // devuelve un ReferenceError

}

Nota: Falta traducción aclaratoria.

Operador void y undefined

El operador void es una tercer alternativa.

var x;
if (x === void 0) {
   // se ejecutan estas instrucciones
}

// y no fue declarada antes
if (y === void 0) {
   // lanza un ReferenceError (a diferencia de  `typeof`)
}

Especificaciones

Specification Status Comment
ECMAScript 1st Edition (ECMA-262)
The definition of 'undefined' in that specification.
Standard Initial definition. Implemented 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  
ECMAScript 2017 Draft (ECMA-262)
The definition of 'undefined' in that specification.
Draft  

Compatibilidad con navegadores

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Etiquetas y colaboradores del documento

Etiquetas: 
 Colaboradores en esta página: BubuAnabelas, SphinxKnight, teoli, ADP13, Talisker, Mgjbot, Sheppy
 Última actualización por: BubuAnabelas,