Miniatura
0

Javascript: null y undefined

Javascript, ese lenguaje que nos trae de cabeza a tantos y tantos programadores… Cuando lo pruebas parece un lenguaje de niños, muy flexible, como de “juguete”, y a medida que te adentras y vas descubriendo cosas te sorprendes más. A veces a bien, a veces a mal.

En este caso vamos a hablar de null y undefined, que sé que más de uno se habrá visto en la tesitura más de una vez, de no entender qué pasa realmente.

Uno de los primeros artículos que leí antes de empezar con el post, fue este, del cual extraemos algo para asentar un poco las bases, y que realmente nos responde a casi todas las preguntas sobre undefined

Undefined (type) is a built-in JavaScript type.

undefined (value) is a primitive and is the sole value of the Undefined type. Any property that has not been assigned a value, assumes the undefined value. (ECMA 4.3.9 and 4.3.10). A function without a return statement, or a function with an empty return statement returns undefined. The value of an unsupplied function argument is undefined.

undefined (variable) is a global property whose initial value is undefined (value), Since its a global property we can also access it as a variable. For consistency I’m always going to call it a variable in this article.

Con lo cual ya vemos que cuando decimos undefined debemos tener bien claro de qué estamos hablando, hablar con propiedad, vamos… Realmente teniendo en mente esto, undefined deja de ser demasiado problema para nosotros, salvo algunas curiosidades que de vez en cuando nos encontraremos, por ejemplo el tema de los navegadores

alert(foo)
//FF/Chrome: foo is not defined
//IE: foo is undefined
//Safari: can't find variable foo

Sí… lo sé, parece un complot para volvernos locos ;-)

En realidad no hay tanto problema cuando sabes a qué te enfrentas, por eso muchos desarrolladores se vuelven algo paranoicos con cosas así:

undefined == null
// true

undefined === null
// false

Cuando en realidad tiene todo el sentido del mundo, porque del segundo modo comparamos también los tipos, y evidentemente no son iguales.

Dando paso a null, encontré una de las explicaciones más graciosas en este artículo de stackoverflow, el resumen (muy resumido) es este:

Primera opción:

(nombre es undefined)
Tu: Qué es nombre?
JavaScript: nombre? qué es un nombre? No sé de qué estás hablando, nunca me has mencionado ningún nombre antes.

Segunda opción:

nombre = null;
Tu: Qué es nombre?
JavaScript: No lo sé.

Tercera opción:

nombre = false;
Tu: Qué es nombre?
JavaScript: Booleano false.

Cuarta opción:

nombre = ”;
Tu: Qué es nombre?
JavaScript: Una cadena vacía.

Y hablando de la “Cadena vacía” (Empty String) supongo que también sabéis que un “Empty String” en javascript es un false, aunque hay que puntualizar porque como digo arriba o hablamos con propiedad o nos liaremos aún más que el “Empty String” no es exactamente el Booleano false, solo que dentro de un condicional en javascript se interpreta así, a no ser, como el caso de arriba de undefined, que dentro del condicional lo hagamos con “===” (os recomiendo repasar el “type coercion“).

Deja un comentario

Una web debe ser...

Una web
debe ser

Usable

Un usuario aprende cada día. Navega y utiliza servicios web acostumbrándose a tener algunos elementos en determinado lugar y a utilizarlos de cierta manera. Una aplicación es usable si antes de hacer una determinada acción se puede predecir lo que sucederá.

Universal

El punto de mayor incidencia en la universalidad es que la aplicación sea multidispositivo. Poder visualizar desde cualquier dispositivo, lugar, y momento. Y además, disfrutar de una experiencia de usuario plena.

Encontrable

Hablamos de un conjunto de normas, pautas o guías por las que el usuario llega a la aplicación. Debe encontrar la aplicación, pero puede llegar mediante buscadores (SEO), también con recomendaciones, lecturas en medios, desde redes sociales (SMO), y otros métodos (SEM, etc)

Veloz

Como dijo David Cheriton: "Si es rápido y feo, lo utilizarán y te maldecirán, y si es lento, no lo utilizarán". Si una web es rápida repercute en menos gasto mensual, más satisfacción del usuario, y mayor posibilidad de conversión por parte del mismo.

Útil

Un sitio web tiene que ser útil en vistas al usuario para el que está concebido. Hay que entender la necesidad del usuario y poder ofrecer lo que busca. Contenidos, traducciones, herramientas, comparativas, utilidades, etcétera...

Cerrar