Tipos de Datos
Primitivos y objetos
Tipos de Datos en JavaScript
JavaScript tiene dos categorias de tipos de datos: primitivos y objetos. Entender los tipos es fundamental para escribir codigo libre de errores.
Tipos Primitivos
Los primitivos son valores inmutables que no tienen metodos ni propiedades (aunque JS los envuelve temporalmente para acceder a metodos).
String (Cadena de texto)
const saludo = "Hola";
const nombre = 'Mundo';
const plantilla = `${saludo}, ${nombre}!`; // Template literal
Number (Numero)
const entero = 42;
const decimal = 3.14;
const negativo = -10;
const infinito = Infinity;
const noEsNumero = NaN; // Not a Number
Boolean (Booleano)
const verdadero = true;
const falso = false;
const resultado = 10 > 5; // true
undefined
let sinDefinir;
console.log(sinDefinir); // undefined
function sinRetorno() {}
console.log(sinRetorno()); // undefined
null
const vacio = null; // Ausencia intencional de valor
const usuario = null; // Usuario no existe
Symbol (ES6)
const id = Symbol('id');
const otroId = Symbol('id');
console.log(id === otroId); // false - cada Symbol es unico
BigInt (ES2020)
const numeroGrande = 9007199254740991n;
const otroBigInt = BigInt(123456789012345678901234567890);
Verificando Tipos con typeof
console.log(typeof "hola"); // "string"
console.log(typeof 42); // "number"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (bug historico!)
console.log(typeof {}); // "object"
console.log(typeof []); // "object" (arrays son objetos)
console.log(typeof function(){}); // "function"
Coercion de Tipos
JavaScript automaticamente convierte tipos en ciertas situaciones:
// Coercion de string
console.log("5" + 3); // "53" (numero a string)
console.log("5" - 3); // 2 (string a numero)
// Coercion de boolean
console.log(Boolean("")); // false
console.log(Boolean("hola")); // true
console.log(Boolean(0)); // false
console.log(Boolean(42)); // true
// Valores falsy: false, 0, "", null, undefined, NaN
// Todo lo demas es truthy