Los datos primitivos

Tipos de datos

En la sección de Programar se hace una primera aproximación a los elementos básicos con que vas a enfrentarte al escribir tus scripts.

Es el momento de ahondar algo más en estos elementos y comenzaremos por los más elementales: los datos.

JavaScript maneja cuatro tipos de datos simples o primitivos:

Numericos
Para manejar números reales, enteros, positivos, negativos.
Literales
O cadenas, son datos que manejan caracteres como letras, signos de puntuación, símbolos gráficos. Todos los símbolos imprmibles. Se reconcoen porque están escritos entre comillas. En la mayoría de los lenguajes se les llama tipo string
Lógicos o booleanos
Son datos un poco especiales que solo pueden tener dos valores, verdadero (true, 1) o falso (false, 0)
Referencias
Son valores que apuntan al lugar donde se encuentra almacenada una variable o un elemento del programa. En lenguajes como C se les llama punteros

Javascript es un lenguaje nada estricto con los tipos de datos que maneja, de forma que una variable puede usarse apra guardar un dato numérico y después para un dato de cadena o uno lógico.

Posee un mecanismo de conversión de datos interno que permite por ejemplo convertir un dato de uno a otro tipo según como vaya a ser usado. Por ejemplo 5*"30" es 150, el literal "30" es convertido al número 30.

Los datos pueden usarse directamente en el código o guardados en las variables.

Un dato se guarda en una variable con el operador =, que se leería como se guarda

console.log( 2*10);

base = 2;

altura=10;

area = base*altura;

En la linea 1 usamos los números directamente, y en las otras usamos variables. La linea 2 dice que en la variable base se guarda el valor 2. Ese orden de escritura es obligatorio al almacenar un valor en una variable.

Si los datos no van a cambiar en todo el programa se pueden usar directamente (constantes), pero si pueden tomar distintos valores lo suyo es almacenarlos en las variables.

Existe un último tipo de datos que también se emplea a menudo en los scripts para la captura de eventos, son direcciones de memoria, o punteros, usadas para asignar funciones.

Si en una variable se guarda el nombre de una función esa variable se convierte en otro nombre para esa función. ¿Raro? Esto tiene su verdadera utilidad al asignar funciones a los eventos o para definir objetos.

Resumen

Los datos son la materia prima de cualquier programa

Un dato es una forma de representar una información del mundo real

Hay muchas clases de información y por tanto muchos tipos de datos para representarla.

No es lo mismo una palabra que un número. Son tipos de datos diferentes.

Los tipos primitvos en Javascript son los tipos de datos más simples que maneja este lenguaje de programación

Habitualmente los datos primitivos tienen asociados un objeto que es el que finalemente vas a manejar en tus scripts.

Javascript convierte entre si algunos tipos de datos de forma interna sin necesidad de intervenir en el proceso.

Junto a estos datos primitivos Javascript maneja el tipo de datos objeto. Son datos complejos que puede agrupar datos primitos y otros objetos, además de funciones

Datos numéricos

Javascript es capaz de manejar valores numéricos en base 10 (los que se usan habitualmente), pero también octales y hexadecimales.

Octales son numeros escritos en base 8, es decir, que una decena en este sistea son 7 unidades, no 10 como en el sistema decimal. El número ocho sería por tanto 10, y el nueve 11. No existen los dígitos 8 ni 9.

octal9 = 010;

otro = 012;

El hexadecimal te va a sonar más porque es el sistema usado para codificar los colores. Son cantidades con base 16, es decir que las decenas tienen 15 unidades (0 al 15) , de forma que el número decimal 16 sería 10. Mientras que para representar cantidades entre 9 y 15 se usan letras de la A a la F. Así el decimal 10 es A, el decimal 11 es B... Lo puedes usar en codificación de colores y poco más.

hexa24 = 0x16;

otro = 0x12;

dividir = 0x18/0x02;

console.log(dividir) //daría 12

Se usan como se usaría cualquier otro número: en sumas, restas, multiplicaicones, potencias...

También se pueden escribir usando notación científica por ejemplo 2000 podría escribirse como 2E+3, que es 2·103.

Los números pueden utilizar en las operaciones matemáticas habituales: suma, resta, multilicación, división y división entera.

Extra

Los operadores elementales para trabajar con números son lo que usas en matemáticas: x - * / y % para la división entera.

División entera calcula el resto de dividir dos números

Los datos primitivos numéricos tienen asociado el objeto Number para manipular números.

Sstrings (literales)

Los datos literales de cadena, más conocidos como strings, son los usados para representar palabras y símbolos imprimibles, así los siguientes son datos de cadena: "prueba""La clave es 4r5t", 'hoy es jueves', ` estoy entre comillas invertidas`

Observa que estos datos están encerados entre comillas (dobles o sencillas o invertidas), es la forma de decirle a JavaScript que está ante una cadena de caracteres y no ante un nombre o descriptor de algún elemento del programa.

Es decir "41" es un dato tipo stringmientras que 41 es el número cuarenta y uno.

¿Y que ocurre si quiero que la cadena tenga comillas?, por ejemplo queremos escribir la siguiente frase Juan alias "Maqui" es el jefe.

Dos soluciones

  • Usar comillas simples y encerrar en ellas las comillas dobles. O viceversa
  • Usar el carácter de escape \ (barra invertida) para señalar que lo que sigue tiene que ser tomado como un carácter

Las dos soluciones en este ejemplo

frase1 = 'Juan alias "Maqui" es el jefe"

frase2 = "Juan alias \"Maqui\" es el jefe"

 Pulsa en el enlace para ver el resultado en una ventana emergente. Como ves em ambos casos se escriben las comillas sin error alguno.

Para las comillas esto va bien, pero existen más caracteres especiales con los que debemos usar la técnica del carácter de escape: tabulaciones, saltos de linea o la propia barra invertida

javascript:window.alert("Esto usa una \t tabulación ");

javascript:window.alert("Esto usa un \n cambio de línea");

javascript:window.alert("Esto usa un \r retorno de carro");

javascript:window.alert("Esto es la barra invertida \\ ");

Esto es bastante importante pues en muchas ocasiones usarás un programa para escribir segmentos de páginas HTML donde tendrás que usar caracteres especiales, como por ejemplo las comillas de los atributos. Las comillas simples equivalen a las comillas dobles.

Y otro punto importante con los lietrales: las cadenas se pueden concatenar para formar una sola. Se usa el símbolo de suma, +.

var hola = "Hola";

var persona = "Juan";

var saludo = hola + ": "+persona;

window.alert(saludo);

Aquí encadenamos tres cadenas para formar la frase de saludo.

Las string son un implementdas en Javascript como un objeto con métodos y propiedades que verás más adelante. Por ahora ten en cuenta que puedes acceder a los elementos de un string mediante la posición comenzando con 0. Si nombre contiene "Juan", nombre[1] es la letra u

¿Y si necesito una cadena multi linea? En este caso echamos mano de las comillas invertidas

let hola = `Hola:

¿qué estas haciendo aqui?.

Deberías estar allí`

window.alert(hola);

Si pruebas este sencillo script verás que en el aler te aparecen las tres lineas sin necesidad de usar los cacteres de nueva linea (\n). Es el quivalente del heredoc (>>>EOT) del PHP

Pero hay más. Estas comillas invertidas te permiten evaluar variables dentro de cadenas. Eso significa que... bueno un ejemplo te lo dejará más claro

let persona = "Juan";

let hora = "10";

console.log(`Hoy ${persona} tiene el turno de las ${hora}`)

Si lo pruenas verás que en consola parece "Hoy Juan tiene el turno de las 10"

Las variables persona y hora se han sustituido por sus valores dentro de la cadena.

Resumen

Los datos literales son conocidos como strings o cadenas de caracteres alfanuméricos y gráficos

Es un tipo primitivo, pero Javascript lo va a convertir al objeto String para poder hacer modificaciones, búsquedas eempalzos y otras operaciones con ellos.

Solo el método global eval() distingue entre una cadena como tipo primitivo y una string como objeto.

Booleanos

Número sy letras son datos fáciles de entender, los usamos a diario.

Pero ya sabrás aquello de que la informática funciona con ceros y unos. Pues en los lenguajes de programación esto se maneja con los llamados valores booleanos o lógicos.

Por ejemplo si preguntas a alguien ¿son las cinco en punto? sólo hay dos posibles respuestas: SI o NO. Este tipo de datos no es ni numérico ni de cadena, a eso me refiero con valores lóogicos o booleanos.

Son un tipo de datos que solo contempla dos valores posibles: true y false. Si es necesario Javascript traduce true a 1 (para convertrilo e número ) o como la cadena "true" para convertirlo en string. Y algo similar para false, lo convierte a 0 (para convertirlo en número) , como la cadena "false" para usarlo como un literal.

Es decir esto no provoca error, aunque no tenga mucho sentido

var esDia = true;

var precio = 45;

document.write(45*true)     //daría 45

Son las consecuencias de la flexibilidad de <javascript en el manejo de datos.

Los datos lógicos tienen sentido en instrucciones condicionales y en bucles. Es decir para comprobar condiciones. El resultado de una comparación es un valor lógico, también hay funciones que devuelven valores lógicos.

var precio = 41;

var esPar = precio%2 == 0;

var esCaro = precio > 25

console.log(esPar);    //diría false (resto de 41/2 no es 0)

console.log(esCaro);    //diría true 41 es mayor que 25

Resumen

Los datos booloeanos o datos lógicos solo manejan dos valores, true y fals.e

Este es un tipo de dato primitivo que se maneja mediante el objeto Boolean.

Este tpo de datos es básico para los bucles, estructuras condicionales y son resultado de comparaciones.

Son transformables en strings y en números. Asi este tipo es vcnvertido por Javascript según el contexto: el valor true es una cadena "true" y numéricamente es 1. Mientras que false es la cadena "false" y numéricamente es 0.

 

Referencias: objetos

Este tipo de datos es el más raro. No es tan evidente y fácil de entender como los anteriores.

Y es que no son valores visibles, como un número, un literal o un verdadero falso.

Recuerda que una variable es un lugar que almacena valores: numeros letras, booleanos... Y esa variable la llamamos por un nombre para facilitar el trabajo. Pues bien esa variable para Javascrpt, internamente, es un lugar en la memoria del ordenador. Y cada lugar en esa memoria se identifica por una dirección

Pues los punteros o referencias son datos que guardan esa posición de memoria.

Parece complicado ¿verdad? Pues no lo es. Realmente vas a usars este tipo de datos sin darte cuenta. Si usas objetos estás usando punteros o referencias. Y con Javascript vas a usar objetos con total seguridad.

Resumen

Las referencias son direcciones de almacenamiento de objetos.

Estos datos no se manejan directamente ni a través de objetos. Es un tipo de dato propio e interno de Javascript.

Es bueno conocer el concepto para evitar errores habituales, por ejemplo al intentar asignar objetos entre sí.

También es importante para entender el concepto de herencia en los objetos de Javascript.

En otros lenguajes de programación se conocen como punteros.