{ . . . }

Tipos de datos en JavaScript

Sin Comentarios

Programar es manipular datos, pero ¿qué son los datos? : Los datos son cualquier tipo de información que podemos almacenar en nuestros programas, por ejemplo, tu nombre, edad o color de tu cabello, toda esta información son datos que se pueden almacenar en un programa de algún lenguaje de programación. En este apartado veremos los tipos de datos en JavaScript y sus características.

Javascript maneja seis siete tipos de datos, donde seis de ellos son tipos de datos primitivos y se enumeran a continuación:

  1. String
  2. Number
  3. Boolean
  4. Undefined
  5. Null
  6. Object (Cualquier valor que no sea uno de los tipos de datos primitivos enumerados anteriormente es un objeto. Estos incluyen los Arrays, las funciones y los objetos literales)
  7. Symbol (disponible solo desde ES6)

JavaScript es un lenguaje dinámicamente  tipado o de tipado débil, esto significa que no es necesario declarar el tipo de variable antes de usarla, pues este será determinado automáticamente cuando el programa comience a ser procesado. Por lo tanto una variable no se asocia con ningún tipo, sin embargo su valor sí lo hace. En otras palabras, la misma variable puede contener valores de diferentes tipos y que estos cambien en cualquier momento. Veamos un ejemplo:

var myVar;
typeof myVar // "undefined"

myVar = "Hola"
typeof myVar // "string"

myVar = 20;
typeof myVar // "number"

myVar = true;
typeof myVar // "boolean"

myVar = [1,2,3,4,5];
typeof myVar // "object"
Utilizamos el operador especial typeof para saber el tipo de valor que se encuentra almacenado en la variable

Tipo de dato: String (Cadena de caracteres)

En JavaScript, un string o cadena de caracteres no es mas que una secuencia de cero o más caracteres (letras, números, símbolos, espacios e incluso emojis). Las cadenas están contenidas dentro de un par de comillas simples '..'o comillas dobles ".."

Un punto clave a recordar, es que un string que comienza con comillas dobles debe terminar con comillas dobles y un string que comienza con comillas simples debe terminar con comillas simples.

Las cadenas en JavaScript son inmutables, es decir no se pueden modificar una vez ya creadas. Sin embargo, podemos crear una nueva cadena o string basado en una operación que involucre al string original. Sería algo así:

var myVar = "Aprendiendo";
myVar = myVar + " JavaScript"; // "Aprendiendo JavaScript"

En el ejemplo anterior declaramos una variable myVar y la inicializamos con un string, luego usamos el operador + para concatenar el valor de la variable con un nuevo string y el valor de esta operación queda almacenado en la variable myVar. Lo que hace el interprete de JavaScript es crear un nuevo string el cual contiene la nueva cadena "Aprendiendo JavaScript" omitiendo los valores almacenados anteriormente bajo la misma variable myVar.

  Más adelante tratamos el tema de los Strings en JavaScript con más detalle.


Tipo de dato: Number (Numeros)

Los números son valores que se pueden usar en cualquier tipo de operación matemática, estos no necesitan ninguna sintaxis especial, simplemente los escribimos y JavaScript los sabrá interpretar.

var myEdad = 24;

los números pueden ser enteros o números de punto flotante (también denominados ‘decimales’ o simplemente ‘flotantes’, como 3.14159)

typeof 120 // Numero entero
"number"

typeof 3.25863 // Numero decimal punto flotante
"number"

JavaScript no distingue entre enteros y decimales de coma flotante, a ambos se consideran del mismo tipo de dato, enfoque diferente para la mayoría de los otros lenguajes de programación. Este comportamiento se establece en la especificación ECMAScript, pero ES6 proporciona un método práctico Number.isInteger() que se puede usar para verificar si un número es un entero.

Números octales y hexadecimales:

Para representar los octales literales (base 8), establecemos el primer dígito como cero(0) seguido de números de dígitos octales (0 a 7) de la siguiente manera:

var myEdad = 24;

Para crear un hexadecimal (base 16), debemos usar Cero equis(0x) como los dos primeros caracteres seguidos por cualquier número de dígitos hexadecimales (0 a 9, y de A a F).

var hexa = 0xAF; // 175: Donde A representa 10 y F representa 15

Not a Number: NAN

JavaScript tiene un valor numérico especial llamado NaN, que significa “No es un Número”. De hecho, aunque es identificado como un tipo de dato numero, este es equivalente a un número inválido.

var a = "String";
var b = 100;

console.log(a/b); // NaN

En el ejemplo anterior tratamos la división de un string y un numero, por lo que el resultado es NAN

Hay varias formas en que NaN puede suceder:

  1. División de cero por cero.
  2. División un infinito por un infinito.
  3. Multiplicación de un infinito por un cero.
  4. Cualquier operación en la cual NaN es un operando.
  5. Convertir una cadena no numérica o indefinida en un número.
  Más adelante tratamos el tema de los Números en JavaScript con más detalle.


Tipo de dato: Boolean (Booleano / tipo de dato lógico)

Este tipo de dato representa una entidad lógica que puede tener dos valores: true y false (verdadero y falso). Estos reciben su nombre de George Boole, un matemático inglés que trabajó en el campo de la lógica algebraica en los años de 1800.

El propósito de los datos booleanos en JavaScript es el mismo que en el mundo real, nos permite responder preguntas y tomar decisiones basadas en las respuestas. Cada valor en JavaScript tiene un valor booleano y la mayoría de ellos son verdaderos (estos se conocen como truthy values)

También pueden interpretarse como 1(verdadero) y 0(falso)

var saludo = "Hola";
if (saludo == "Hola") {
    console.log("Son iguales"); // True (Verdadero)
}

Para encontrar el valor booleano de una declaración podemos usar la función boolean de la siguiente manera:

Boolean('Hola'); // true
Boolean(100); // true
Boolean(0); // false

Sin embargo, los valores son siempre falsos (falsy values) cuando:

  • Cuando un string esta vacío.
  • Cuando es Cero(0).
  • Cuando es NaN.
  • Cuando es Null
  • Cuando es False
  • Cuando es Undefined
Tenga en cuenta que los valores booleanos truefalse nunca deben ir entre comillas, al tenerlos dentro de comillas estos se convertirán en un string.

Más adelante veremos cómo entran en juego los valores booleanos, y como agregan lógica a nuestros programas.


Tipo de dato: Undefined (indefinido)

undefined es el valor otorgado a las variables a las que no se les ha asignado un valor. También puede ocurrir si la propiedad de un objeto no existe o si una función tiene un parámetro faltante. Básicamente es la forma de JavaScript de decir “No puedo encontrar un valor para esto”.

var myValor;
console.log(myValor); // undefined

Tipo de dato: Null (Nulo)

Null significa ‘sin valor’. Se puede considerar como un marcador de posición que javascript usa para decir “debería haber un valor aquí, pero no existe en este momento”.

null y undefined aparentan ser iguales ya que ambos son tipos de datos “sin valor”, en esto se pueden parecer, pero la realidad es que comportan de forma ligeramente diferente. Por ejemplo, si intentamos hacer sumas con ellos sucede lo siguiente:

100 + null; // 100 (null se comportan como cero)
100 + undefined; // NaN (undefined no es un número)

En el anterior caso null se ve obligado a ser 0, por lo que la suma puede realizarse, mientras que undefined es forzado a NAN, haciendo que la suma sea imposible de realizar.

En el siguiente ejemplo vemos como al comparar los dos tipos con los operadores igual y estrictamente igual los resultados son totalmente diferentes, esto porque aunque en valor sean iguales (ausencia de valor) en tipo de objeto son totalmente diferentes.

null == undefined; // true
null === undefined; // false

En general JavaScript por defecto tiende a establecerse los valores en undefined, mientras que los valores null generalmente tienen que estar establecidos por el programador.


Tipo de dato: Object (Objetos)

En JavaScript un objeto es una colección de propiedades utilizados para representar cosas individuales con múltiples características, estas características se definen por medio de propiedades donde cada propiedad se define como un par de clave-valor “key-value pairs”. Básicamente se utilizan las claves (Keys) para nombrar valores (Values).

El siguiente ejemplo definimos un objeto vacío usando la forma literal del objeto:

var objetoPersona = {};

Ahora definimos el mismo objeto pero esta vez establecemos  tres propiedades:

var objetoPersona = {
    nombre: "Diego",
    apellido: "Garcia",
    edad: 25
};

Si el objeto tiene más de una propiedad, se utilizan las comas (,) para separar los pares.

Un nombre de propiedad puede ser cualquier string (sin comillas). Sin embargo podemos usar comillas alrededor del nombre de la propiedad si este no es un identificador de JavaScript válido. 

Podemos acceder a las propiedades de un objeto de varias formas, ya sea utilizando la notación de punto (.) o  también la de corchetes ([]). Veamos:

console.log(objetoPersona.nombre); // "Diego"
// o
console.log(objetoPersona["apellido"]); // "Garcia"

JavaScript nos permite anidar objetos en los valores de las claves, a continuación un ejemplo:

var objetoPersona = {
   nombre: "Diego",
   apellido: "Garcia",
   edad: 25,
   ubicacion: {
      ciudad: "Bogotá",
      estado: "Cundinamarca",
      pais: "Colombia"
   }
};

Para obtener una propiedad de un objeto anidado podemos utilizar la notación de punto donde referenciamos cada clave asociada al valor que deseamos obtener

console.log(objetoPersona.ubicacion.pais); // "Colombia"

Además de la forma literal del objeto podemos usar la palabra clave “new” para crear un nuevo objeto de la siguiente forma:

var objetoPersona = new Object();

Y para asignar al objeto un valor de una propiedad lo vamos a hacer de la siguiente forma:

objetoPersona.name = "Tomas";

En JavaScript, todos los objetos se derivan del tipo Object, pero esto lo discutiremos más adelante.


En este tutorial, hemos aprendido acerca de los tipos de datos establecidos en JavaScript, estos son: undefined, null, number, string, boolean, symbol y object. Aunque más adelante hablamos de cada uno de ellos con más detalles.

Comentar

avatar