domingo, 14 de mayo de 2017

typeof() y parse(). Determinar y cambiar el tipo de Datos de una variable JavaScript

Ya vimos en post pasados como manejar los dos tipos principales de variables, que es el tipo numérico y el de tipo cadena de texto, pero en ocasiones es interesante determinar que tipo de datos contiene una variable, pues el comportamiento es distinto, no es lo mismo una cadena de texto que contiene un 1 que un dato numérico con el número 1. Pero veamos ejemplos prácticos para poderlo entender mejor.

Consideremos el siguiente ejemplo




<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Document</title>
            <script type="text/javascript">
                        var cadena = "Hola";
                        var numero = 725;
                        alert ("La variable 'cadena' es de tipo " + typeof(cadena) + "\nLa variable 'numero' es de tipo " + typeof(numero));
            </script>
</head>
<body>
</body>
</html>



La función typeof() recibe como parámetro el nombre de la variable que queremos comprobar y devuelve el tipo de dato que contiene, no se preocupen si no entienden lo que es una función, un parámetro o un retorno, lo veremos en post posteriores. Así, en el ejemplo propuesto, cuando se evalúa la primera variable, vemos que es de tipo string (cadena alfanumérica) y la segunda es de tipo number (valor numérico).

Cambiar el tipo de una variable

En ocasiones tenemos que cambiar el tipo de dato que contiene una variable. En post siguientes veremos ejemplos de cuando es necesario cambiar el tipo de dato. Pero por ahora consideremos el siguiente ejemplo:

var dato = "419";

El contenido no es el número 419, sino la cadena compuesta por los caracteres cuatro, uno y nueve, que es considerada como una cadena cualquiera que incluyera letras. Esto es así porque los números que hemos puesto están entre comillas. Para cambiar el tipo de dato que estamos manejando, JavaScript nos ofrece dos posibilidades: la conversión explícita o la conversión implícita.

Conversión implícita

Veamos un ejemplo de la conversión implícita:

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Document</title>
            <script type="text/javascript">
                        var dato = "723";
                        alert("El dato es " + dato + " Es de tipo: " + typeof(dato));
                        dato*=1;
                        alert("El dato es " + dato + " Es de tipo: " + typeof(dato));
            </script>
</head>
<body>
           
</body>
</html>








En primer lugar hemos creado una variable alfanumérico, que contiene una cadena con los caracteres siete, dos y tres- Sin embargo no es un numero, sino un texto. A continuación lo hemos pasado por una operación aritmética tan simple como multiplicarlo  por 1, como si de un valor numérico se tratase. Con este simple hecho hemos cambiado el valor de la cadena por el valor numérico 723. Cuando una cadena está formada exclusivamente por caracteres que representan números, podemos hacer con ella una operación aritmética y se procesará como si fuera un número.

Este modo de conversión tiene una limitación natural. Supongamos que la cadena que se va a convertir tiene algún carácter que no sea  un dígito numérico, para ello consideremos el siguiente ejemplo:
<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Document</title>
            <script type="text/javascript">
                        var dato = "723";
                        alert("El dato es " + dato + " Es de tipo: " + typeof(dato));
                        dato*=1;
                        alert("El dato es " + dato + " Es de tipo: " + typeof(dato));
            </script>
</head>
<body>
</body>
</html>

El segundo cuadro de aviso muestra una debilidad de la función typeof(). Observe que nos dice que el tipo de dato es number, sin embargo el dato que nos muestra en NaN que significa Not a Number. Esto sucede cuando intentamos tratar como numérico a un dato que, por su contenido, no puede procesarse de este modo. Por lo tanto, lo que nos indica la función typeof() es que no es exacto

Conversión explícita

Aparte de la conversión implícita que acabamos de ver, existes funciones que nos permiten realizar una conversión explícita de datos. De este modo, no estaremos a la suerte del dato en sí, sino que especificaremos ex profeso, su tipo. Consideremos el siguiente ejemplo:

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Document</title>
            <script type="text/javascript">
                        var miVariable= "736.832";
                        miVariable=parseFloat(miVariable);
                        alert("El dato es: " + miVariable + " y es de tipo "  + typeof(miVariable));
            </script>
</head>
<body>
         
</body>
</html>


Si se fijan la variable llamada miVariable tiene un valor de texto que contiene el digito siete, tres, seis, punto, ocho, tres y dos, es una cadena de texto, sin embargo, al ejecutarlo, vamos que JavaScript nos informa que es una tipo de datos number, esto se logra mediante la función parseFloat, esta función recibe como argumento el dato que queremos convertir a número decimal y nos devuelve el número decimal mismo.

Existe otra función que nos permite convertir un dato, en un dato numérico, pero sin decimales, hablamos de la función ParseInt y para ello consideremos el siguiente ejemplo:

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Document</title>
            <script type="text/javascript">
                        var miVariable= "736.832";
                        miVariable=parseInt(miVariable);
                        alert("El dato es: " + miVariable + " y es de tipo "  + typeof(miVariable));
            </script>
</head>
<body>
           
</body>
</html>



Como podemos observar, la variable únicamente toda su parte entera ignorando la decimal.

Hasta aquí el post queridos lectores, espero haya sido de su agrado y de su utilidad, no se olviden de comentar, compartir, dar +1 o clic en algún anuncio

Banderas de Visitantes

Flag Counter