var caso1 = 452;
var caso2 = ‘452’;
var caso3;
Con esta comparativa puede ver claramente que undefined es un valor, aunque sea “sin valor”.
4. La variable caso1 contiene datos del tipo Number ; la variable caso2 contiene datos del tipo String , mientras que la variable caso3 no ha sido inicializada y es del tipo undefined.
5. El caso de la falta de parámetros también produce variables de este tipo. Un ejemplo sería el siguiente:
var caso1 = { };
6. En efecto, la variable caso1 sí ha sido inicializada pero no muestra ningún parámetro, por tanto, es del tipo undefined.
7. En JavaScript, el valor null se considera un valor especial, puesto que en sí mismo es un valor aunque indica la falta de contenido. En nuestras variables de ejemplo, el valor null sería como sigue:
var caso1 = null;
8. Quizás se estará preguntando por qué JavaScript dispone de estos “no-valores” entre sus elementos. La razón se remonta a los inicios de este lenguaje de programación. JavaScript adoptó el procedimiento de dividir los valores en primitivos y objetos, así como de utilizar el valor para indicar la ausencia de objetos con el valor null.
9. Así, el valor null se convirtió en 0 (cero) si daba como resultado un número:
Number(null)//El resultado sería 0
5 + null // El resultado sería 5
10. Y se inventó un nuevo no-valor, undefined, para aquellos casos en que el resultado no debiera ser un número, es decir, para variables sin inicializar y para la omisión de propiedades:
Number(undefined) // El resultado sería NaN (Not a Number)
5 + undefined // El resultado sería NaN
008 Comprobar valores indefinidos o nulos
EN ESTE EJERCICIO LE MOSTRAREMOS CÓMO puede comprobar si los valores undefined y null existen en un script por separado o bien si uno de los dos valores existe.
1. Empezaremos por el valor null. Si lo que necesita saber es si el valor de una variable es el mencionado no-valor, es decir, si no tiene ningún valor asociado, sencillamente es preciso comparar esa variable con el valor null. El modo de hacerlo pasa por el uso del comparador === (estrictamente igual):
if(caso1===null) {
}
//Siendo “caso1” el nombre de la variable que estamos analizando
2. En el caso en que la variable devuelva, efectivamente, el valor null , será preciso realizar cuanto se requiera para que el script funcione correctamente.
3. También podemos comprobar de la existencia de una variable undefined utilizando el mismo comparador que para el valor null :
if(caso1===undefined) {
}
En ambos casos (1 y 3), el término caso1 correspondería al nombre de una variable ficticia.
4. A continuación, le mostramos un ejemplo más gráfico de la comprobación de un objeto indefinido:
if (typeof(caso1) === “undefined”){
alert(“caso1 no está definido.”);
}
5. Sin embargo, no es ésta la única forma de realizar esta comprobación. El operador Typeof es otro modo de llevarla a cabo, aunque normalmente, y debido a su sencillez, se utilizará el comparador ===.
6. Typeof es un operador que devuelve una cadena o string que describe el tipo de dato que corresponde con el objeto, ya sea una variable, una función..., que se escribe a continuación. Más concretamente, el operador typeof distingue los valores primitivos de los objetos y, en el caso de las primitivos, determina el tipo al que pertenecen: “number”, “string”, “boolean”, “object”, “function” y “undefined”.
7. El operador typeof de JavaScript también puede interpretar el valor null , y en este caso lo hace como un tipo Object, no como un tipo null. Este comportamiento, que puede provocar confusiones, se mantiene por compatibilidad con versiones anteriores del lenguaje.
8. La propiedad SomeObject.prop también se utiliza para comparar un valor no definido en null. ¿Cómo? Verificando que esta comparación es true si la propiedad SomeObject.prop es null o si dicha propiedad no existe.
La propiedad SomeObject.prop también se utiliza para comparar un valor no definido en null comprobando que esta comparación es true si la propiedad SomeObject.prop es null o si dicha propiedad no existe.
IMPORTANTE
Si el uso y la aplicación del operador Typeof no le ha quedado demasiado claro, no se preocupe; más adelanteen este libro dedicaremos un ejercicio entero a dicho operador.
009 Objetos envolventes para primitivos
LOS TRES TIPOS DE DATOS PRIMITIVOS en JavaScript, booleano, numérico y cadena de caracteres, tiene su correspondiente constructor: Boolean, Number y String. Los valores primitivos son contenidos o envueltos (wrap) en las instancias, también denominadas objetos envolventes (en inglés, wraper objects).
1. En este ejercicio veremos los detalles de los objetos que envuelven los primitivos. Para empezar diremos que los constructores crean objetos que son prácticamente incompatibles con los valores primitivos que envuelven.