JavaScript

JavaScript

Tutorial JavaScript: Tipos de datos

JavaScript tipos de datos: definición y ejemplos. Domina los diferentes tipos de datos en JavaScript con ejemplos prácticos y detallados.

Aprende JavaScript y certifícate

Tipos primitivos básicos: tipado dinámico, Number, String, Boolean

En JavaScript, el tipado dinámico permite que las variables cambien de tipo durante la ejecución del programa. No es necesario especificar el tipo al declarar una variable; JavaScript determina el tipo en función del valor asignado.

Números (Number)

El tipo Number representa tanto números enteros como de punto flotante. Se utiliza para realizar operaciones matemáticas y cálculos numéricos:

let edad = 30;            // Número entero
let temperatura = -5.5;   // Número decimal
let precio = 1200.50;     // Precio con decimales

Cadenas de texto (String)

Las Strings son cadenas de texto que se utilizan para representar caracteres y palabras. Se pueden definir usando comillas simples, dobles o backticks:

let nombre = "Juan";                // Con comillas dobles
let apellido = 'Pérez';             // Con comillas simples
let saludo = `Hola, ${nombre}!`;    // Template literal con interpolación

Los template literals (con backticks) son especialmente útiles porque permiten insertar variables directamente en el texto, como vimos en nuestro primer programa de "Hola mundo".

Booleanos (Boolean)

El tipo Boolean tiene solo dos valores posibles: true o false. Es fundamental para realizar evaluaciones lógicas y controlar el flujo de ejecución:

let esMiembro = true;
let tieneAcceso = false;

// Los booleanos son útiles para tomar decisiones
if (esMiembro) {
    console.log("Bienvenido, miembro!");
}

Gracias al tipado dinámico, una variable puede cambiar su tipo en cualquier momento:

let variable = 100;    // variable es un Number
variable = "Cien";     // ahora es una String
variable = false;      // ahora es un Boolean

Tipos especiales: ausencia de valor

JavaScript tiene dos valores especiales para representar "ausencia de valor", cada uno con un propósito diferente:

undefined

El valor undefined se asigna automáticamente a variables que han sido declaradas pero no inicializadas:

let usuario;
console.log(usuario);         // undefined
console.log(typeof usuario);  // "undefined"

// También aparece cuando accedemos a propiedades inexistentes
let persona = {nombre: "Ana"};
console.log(persona.edad);    // undefined

null

Por otro lado, null es un valor que asignamos intencionalmente para indicar la ausencia de un objeto o valor:

let datosUsuario = null;  // Todavía no tenemos datos
console.log(datosUsuario); // null

// Útil para resetear o vaciar una variable
let seleccion = "Opción 1";
seleccion = null;  // El usuario canceló la selección

Aunque ambos representan "ausencia", tienen diferencias importantes:

  • undefined generalmente indica algo que no ha sido inicializado
  • null indica una ausencia intencional de valor

Nuestro primer tipo complejo: Objetos

Además de los tipos primitivos, JavaScript tiene objetos que nos permiten agrupar múltiples valores relacionados:

// Un objeto simple que describe a una persona
let persona = {
  nombre: "Ana",
  edad: 25,
  esEstudiante: true
};

// Accediendo a las propiedades
console.log(persona.nombre);  // "Ana"
console.log(persona.edad);    // 25

Nota: Los objetos son un tema extenso que exploraremos con más detalle en módulos posteriores. Por ahora, solo necesitas comprender que son colecciones de pares clave-valor.

Verificación de tipos con typeof

JavaScript nos proporciona el operador typeof para verificar el tipo de un valor:

console.log(typeof 42);        // "number"
console.log(typeof "Hola");    // "string"
console.log(typeof true);      // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof {});        // "object"
console.log(typeof null);      // "object" (esto es una peculiaridad histórica de JavaScript)

Verificar tipos es útil cuando necesitas asegurarte de que una variable contiene el tipo de dato esperado antes de realizar operaciones con ella.

let entrada = "42";
if (typeof entrada === "string") {
    // Convertir a número si es una cadena
    entrada = Number(entrada);
}

Tipos avanzados

Los siguientes tipos son más avanzados y menos frecuentes, pero es importante conocerlos para tener una visión completa del sistema de tipos en JavaScript.

Symbol

El tipo Symbol, introducido en ES6, se utiliza para crear identificadores únicos e inmutables:

const id = Symbol('id');
let usuario = {
  nombre: 'Alice',
  [id]: 12345  // Propiedad con Symbol como clave
};

console.log(usuario.nombre);  // "Alice"
console.log(usuario[id]);     // 12345

Los Symbols son útiles en código más avanzado para crear propiedades que no colisionarán con otras, incluso si tienen el mismo nombre.

BigInt

El tipo BigInt permite representar números enteros extremadamente grandes, más allá del límite del tipo Number:

// Los BigInt se crean añadiendo 'n' al final o usando la función BigInt()
const numeroGrande = 9007199254740991n;
const otroNumeroGrande = BigInt('9007199254740991');

console.log(numeroGrande + 1n);  // 9007199254740992n

BigInt es útil cuando trabajas con números muy grandes como identificadores, timestamps precisos o cálculos científicos.

Tipos por referencia vs tipos por valor

El siguiente concepto es fundamental y será crucial para entender el comportamiento de objetos y arrays más adelante en el curso.

En JavaScript, los tipos de datos se dividen en dos categorías según cómo se almacenan en memoria:

Tipos primitivos (por valor)

Los tipos primitivos (Number, String, Boolean, null, undefined, Symbol, BigInt) se pasan "por valor". Esto significa que cuando asignas o copias estos valores, obtienes una copia independiente:

let x = 10;
let y = x;  // 'y' obtiene una copia del valor de 'x'

y = 20;     // Cambiar 'y' no afecta a 'x'
console.log(x);  // 10
console.log(y);  // 20

Tipos de referencia (por referencia)

Los objetos (incluyendo arrays y funciones) se pasan "por referencia". Cuando asignas o copias estos valores, ambas variables apuntan al mismo objeto en memoria:

let obj1 = { mensaje: "Hola" };
let obj2 = obj1;  // 'obj2' apunta al mismo objeto que 'obj1'

obj2.mensaje = "Adiós";  // Cambiar a través de 'obj2'...
console.log(obj1.mensaje);  // "Adiós" - ¡También afecta a 'obj1'!			

Profundizaremos en este concepto cuando estudiemos arrays y objetos con más detalle, y será especialmente importante cuando veamos cómo trabajar con funciones que modifican datos.

Conversiones básicas entre tipos

A menudo necesitarás convertir valores de un tipo a otro. JavaScript proporciona varias formas de hacerlo:

Convertir a String

let num = 42;
let str1 = String(num);    // Usando la función String()
let str2 = num.toString(); // Usando el método toString()
let str3 = num + "";       // Concatenando con una cadena vacía

Convertir a Number

let str = "42";
let num1 = Number(str);    // Usando la función Number()
let num2 = parseInt(str);  // parseInt() para enteros
let num3 = parseFloat("42.5"); // parseFloat() para decimales
let num4 = +"42";          // Usando el operador unario +

Convertir a Boolean

JavaScript considera algunos valores como "falsy" (equivalentes a false) y el resto como "truthy" (equivalentes a true):

// Valores falsy:
Boolean(0);          // false
Boolean("");         // false (cadena vacía)
Boolean(null);       // false
Boolean(undefined);  // false
Boolean(NaN);        // false

// Cualquier otro valor es truthy:
Boolean(1);          // true
Boolean("Hola");     // true
Boolean([]);         // true (array vacío)
Boolean({});         // true (objeto vacío)

Este concepto de valores "truthy" y "falsy" será muy importante cuando aprendamos sobre estructuras de control como if y bucles.

CONSTRUYE TU CARRERA EN IA Y PROGRAMACIÓN SOFTWARE

Accede a +1000 lecciones y cursos con certificado. Mejora tu portfolio con certificados de superación para tu CV.

30 % DE DESCUENTO

Plan mensual

19.00 /mes

13.30 € /mes

Precio normal mensual: 19 €
63 % DE DESCUENTO

Plan anual

10.00 /mes

7.00 € /mes

Ahorras 144 € al año
Precio normal anual: 120 €
Aprende JavaScript online

Ejercicios de esta lección Tipos de datos

Evalúa tus conocimientos de esta lección Tipos de datos con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Proyecto administrador de contactos

JavaScript
Proyecto

Reto Expresiones regulares

JavaScript
Código

Tipos de datos

JavaScript
Test

Clases y objetos

JavaScript
Test

Array

JavaScript
Test

Conjuntos con Set

JavaScript
Test

Array

JavaScript
Puzzle

Modificación de elementos DOM

JavaScript
Proyecto

Encapsulación

JavaScript
Puzzle

Manipulación DOM

JavaScript
Proyecto

Clases y objetos

JavaScript
Código

Uso de operadores

JavaScript
Puzzle

Uso de operadores

JavaScript
Test

Estructuras de control

JavaScript
Test

Excepciones

JavaScript
Test

Transformación con map()

JavaScript
Código

Arrays y Métodos

JavaScript
Código

Reto Métodos de Strings

JavaScript
Código

Transformación con map()

JavaScript
Puzzle

Funciones flecha

JavaScript
Test

Async / Await

JavaScript
Código

Polimorfismo

JavaScript
Código

Selección de elementos DOM

JavaScript
Puzzle

API Fetch

JavaScript
Código

Encapsulación

JavaScript
Test

Mapas con Map

JavaScript
Código

Creación y uso de variables

JavaScript
Puzzle

Polimorfismo

JavaScript
Puzzle

Tipos de datos

JavaScript
Puzzle

Reto Operadores avanzados

JavaScript
Código

Promises

JavaScript
Código

Reto Estructuras de control

JavaScript
Código

Estructuras de control

JavaScript
Puzzle

Pruebas unitarias

JavaScript
Proyecto

Encapsulación

JavaScript
Código

Inmutabilidad y programación funcional pura

JavaScript
Código

Destructuring de objetos y arrays

JavaScript
Código

Mapas con Map

JavaScript
Código

Funciones flecha

JavaScript
Puzzle

Polimorfismo

JavaScript
Test

Herencia

JavaScript
Código

Array

JavaScript
Código

Transformación con map()

JavaScript
Test

Reto Variables

JavaScript
Código

Gestor de tareas con JavaScript

JavaScript
Proyecto

Manipulación DOM

JavaScript
Test

Funciones

JavaScript
Test

Conjuntos con Set

JavaScript
Código

Funciones flecha

JavaScript
Código

Async / Await

JavaScript
Código

Clases y objetos

JavaScript
Código

Creación y uso de variables

JavaScript
Test

Excepciones

JavaScript
Puzzle

Promises

JavaScript
Código

Funciones cierre (closure)

JavaScript
Test

Herencia

JavaScript
Puzzle

Prototipos y cadena de prototipos

JavaScript
Código

Herencia

JavaScript
Test

Selección de elementos DOM

JavaScript
Test

Modificación de elementos DOM

JavaScript
Test

Funciones flecha

JavaScript
Código

Filtrado con filter() y find()

JavaScript
Test

Funciones cierre (closure)

JavaScript
Puzzle

Callbacks

JavaScript
Código

Funciones

JavaScript
Puzzle

Mapas con Map

JavaScript
Test

Reducción con reduce()

JavaScript
Test

Callbacks

JavaScript
Puzzle

Manipulación DOM

JavaScript
Puzzle

Introducción al DOM

JavaScript
Proyecto

Reto Funciones

JavaScript
Código

Reto Funciones cierre (closure)

JavaScript
Código

Promises

JavaScript
Test

Async / Await

JavaScript
Test

Reto Estructuras de control

JavaScript
Código

Eventos del DOM

JavaScript
Puzzle

Introducción a JavaScript

JavaScript
Puzzle

Async / Await

JavaScript
Puzzle

Excepciones

JavaScript
Código

Promises

JavaScript
Puzzle

Selección de elementos DOM

JavaScript
Proyecto

Filtrado con filter() y find()

JavaScript
Código

Callbacks

JavaScript
Test

Eventos del DOM

JavaScript
Proyecto

Creación de clases y objetos Restaurante

JavaScript
Código

Reducción con reduce()

JavaScript
Código

Filtrado con filter() y find()

JavaScript
Puzzle

Reducción con reduce()

JavaScript
Puzzle

Conjuntos con Set

JavaScript
Puzzle

Herencia de clases

JavaScript
Código

Eventos del DOM

JavaScript
Test

Clases y objetos

JavaScript
Puzzle

Modificación de elementos DOM

JavaScript
Puzzle

Mapas con Map

JavaScript
Puzzle

Proyecto carrito compra agoodshop

JavaScript
Proyecto

Introducción a JavaScript

JavaScript
Test

Filtrado con filter() y find()

JavaScript
Código

Funciones

JavaScript
Código

Reducción con reduce()

JavaScript
Código

Todas las lecciones de JavaScript

Accede a todas las lecciones de JavaScript y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Javascript

JavaScript

Introducción Y Entorno

Introducción A Javascript

JavaScript

Introducción Y Entorno

Tipos De Datos

JavaScript

Sintaxis

Variables

JavaScript

Sintaxis

Operadores

JavaScript

Sintaxis

Estructuras De Control

JavaScript

Sintaxis

Funciones

JavaScript

Sintaxis

Funciones Cierre (Closure)

JavaScript

Sintaxis

Métodos De Strings

JavaScript

Sintaxis

Funciones Cierre (Closure)

JavaScript

Sintaxis

Operadores Avanzados

JavaScript

Sintaxis

Funciones

JavaScript

Sintaxis

Expresiones Regulares

JavaScript

Sintaxis

Estructuras De Control

JavaScript

Sintaxis

Arrays Y Métodos

JavaScript

Estructuras De Datos

Conjuntos Con Set

JavaScript

Estructuras De Datos

Mapas Con Map

JavaScript

Estructuras De Datos

Conjuntos Con Set

JavaScript

Estructuras De Datos

Funciones Flecha

JavaScript

Programación Funcional

Filtrado Con Filter() Y Find()

JavaScript

Programación Funcional

Transformación Con Map()

JavaScript

Programación Funcional

Reducción Con Reduce()

JavaScript

Programación Funcional

Funciones Flecha

JavaScript

Programación Funcional

Reducción Con Reduce()

JavaScript

Programación Funcional

Filtrado Con Filter() Y Find()

JavaScript

Programación Funcional

Transformación Con Map()

JavaScript

Programación Funcional

Inmutabilidad Y Programación Funcional Pura

JavaScript

Programación Funcional

Clases Y Objetos

JavaScript

Programación Orientada A Objetos

Excepciones

JavaScript

Programación Orientada A Objetos

Encapsulación

JavaScript

Programación Orientada A Objetos

Herencia

JavaScript

Programación Orientada A Objetos

Polimorfismo

JavaScript

Programación Orientada A Objetos

Excepciones

JavaScript

Programación Orientada A Objetos

Encapsulación

JavaScript

Programación Orientada A Objetos

Polimorfismo

JavaScript

Programación Orientada A Objetos

Herencia

JavaScript

Programación Orientada A Objetos

This Y Contexto

JavaScript

Programación Orientada A Objetos

Patrón De Módulos Y Namespace

JavaScript

Programación Orientada A Objetos

Clases Y Objetos

JavaScript

Programación Orientada A Objetos

Excepciones

JavaScript

Programación Orientada A Objetos

Prototipos Y Cadena De Prototipos

JavaScript

Programación Orientada A Objetos

Destructuring De Objetos Y Arrays

JavaScript

Programación Orientada A Objetos

Manipulación Dom

JavaScript

Dom

Selección De Elementos Dom

JavaScript

Dom

Modificación De Elementos Dom

JavaScript

Dom

Eventos Del Dom

JavaScript

Dom

Modificación De Elementos Dom

JavaScript

Dom

Eventos Del Dom

JavaScript

Dom

Localstorage Y Sessionstorage

JavaScript

Dom

Bom (Browser Object Model)

JavaScript

Dom

Modificación De Elementos Dom

JavaScript

Dom

Selección De Elementos Dom

JavaScript

Dom

Callbacks

JavaScript

Programación Asíncrona

Promises

JavaScript

Programación Asíncrona

Async / Await

JavaScript

Programación Asíncrona

Promises

JavaScript

Programación Asíncrona

Api Fetch

JavaScript

Programación Asíncrona

Async / Await

JavaScript

Programación Asíncrona

Naturaleza De Js Y Event Loop

JavaScript

Programación Asíncrona

Callbacks

JavaScript

Programación Asíncrona

Websockets

JavaScript

Programación Asíncrona

Módulos En Es6

JavaScript

Construcción

Configuración De Bundlers Como Vite

JavaScript

Construcción

Eslint Y Calidad De Código

JavaScript

Construcción

Npm Y Dependencias

JavaScript

Construcción

Introducción A Pruebas En Js

JavaScript

Testing

Pruebas Unitarias

JavaScript

Testing

Accede GRATIS a JavaScript y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender los tipos de datos primitivos y de objeto en JavaScript.
  • Aprender a declarar y utilizar variables para almacenar diferentes tipos de datos.
  • Familiarizarse con la creación y manipulación de objetos y arrays.
  • Conocer cómo utilizar funciones y métodos para operar con diferentes tipos de datos.
  • Entender el propósito y uso de los tipos de datos especiales undefined, null y Symbol.