hello_world.js
🔹 Tipos de Datos
JavaScript es un lenguaje dinámico con tipado débil. Los tipos de datos se dividen en primitivos y objetos.
Strings
let saludo = "Hola, JavaScript!";let nombre = 'John';console.log(saludo + " " + nombre);
Numbers
let entero = 42;let decimal = 3.14;console.log(entero + decimal); // 45.14
Booleans
let esVerdadero = true;let esFalso = false;console.log(esVerdadero, esFalso);
Null y Undefined
let valorNulo = null;let valorIndefinido;console.log(valorNulo, valorIndefinido);
Tipos de datos y operadores
let entero = 42;let decimal = 3.14;let esVerdadero = true;let texto = "Hola, JS!";let lista = [1, 2, 3];let conjunto = new Set(["A", "B", "C"]);let mapa = new Map([["clave", "valor"]]);let cualquiera = "Puedo cambiar de tipo";
Operadores aritméticos
Operador | Descripción | Ejemplo |
---|---|---|
+ | Suma | a + b |
- | Resta | a - b |
* | Multiplicación | a * b |
/ | División | a / b |
% | Módulo (resto de la división) | a % b |
** | Potencia (exponenciación) | a ** b |
++ | Incremento | a++ o ++a |
-- | Decremento | a-- o --a |
Operadores de asignación
Operador | Descripción | Ejemplo |
---|---|---|
= | Asignación | a = 5 |
+= | Suma y asigna | a += 2 (equivale a a = a + 2 ) |
-= | Resta y asigna | a -= 2 |
*= | Multiplica y asigna | a *= 2 |
/= | Divide y asigna | a /= 2 |
%= | Módulo y asigna | a %= 2 |
**= | Potencia y asigna | a **= 2 |
Operadores de comparación
Operador | Descripción | Ejemplo |
---|---|---|
== | Comparación suelta | a == b |
!= | Desigualdad suelta | a != b |
=== | Comparación estricta | a === b |
!== | Desigualdad estricta | a !== b |
> | Mayor que | a > b |
< | Menor que | a < b |
>= | Mayor o igual | a >= b |
<= | Menor o igual | a <= b |
Operadores lógicos
Operador | Descripción | Ejemplo |
---|---|---|
&& | AND lógico | a > 0 && b > 0 |
|| | OR lógico | a > 0 || b > 0 |
! | Negación lógica | !a |
Operadores bitwise (a nivel de bits)
Operador | Descripción | Ejemplo |
---|---|---|
& | AND bit a bit | a & b |
| | OR bit a bit | a | b |
^ | XOR bit a bit | a ^ b |
~ | Complemento bit a bit (NOT) | ~a |
<< | Desplazamiento a la izquierda | a << 2 |
>> | Desplazamiento a la derecha | a >> 2 |
>>> | Desplazamiento sin signo | a >>> 2 |
Operadores de tipo y existencia
Operador | Descripción | Ejemplo |
---|---|---|
typeof | Retorna el tipo de un valor | typeof a |
instanceof | Verifica si un objeto es instancia de una clase | a instanceof Array |
delete | Elimina una propiedad de un objeto | delete obj.prop |
in | Verifica si una propiedad existe en un objeto | "prop" in obj |
Operadores de control de nulos y valores opcionales
Operador | Descripción | Ejemplo |
---|---|---|
?. | Encadenamiento opcional (evita errores en null o undefined ) | obj?.prop |
?? | Operador Nullish Coalescing (valor por defecto si null o undefined ) | a ?? "Valor por defecto" |
??= | Nullish coalescing assignment (Asigna solo si null o undefined ) | a ??= 5 |
Operadores especiales de JavaScript
Operador | Descripción |
---|---|
, | Permite ejecutar múltiples expresiones separadas por comas (let x = (1, 2, 3); ) |
... | Operador de propagación (spread/rest) (let arr = [1, 2, ...otherArr] ) |
void | Evalúa una expresión y devuelve undefined (void 0 ) |
yield | Pausa y devuelve un valor en generadores (yield 10; ) |
🔹 Estructuras de Control
Condicionales
let edad = 20;if (edad >= 18) { console.log("Mayor de edad");} else { console.log("Menor de edad");}
Switch
let opcion = 2;switch (opcion) { case 1: console.log("Opción 1"); break; case 2: console.log("Opción 2"); break; default: console.log("Opción no válida");}
otros ejemplos de switch
let resultado = { 1: "uno", 2: "dos", 3: "tres"}[opcion] || "otro";console.log(resultado);
🔹 Funciones en JavaScript
function saludo() { console.log("Hola desde una función!");}
const suma = (a, b) => a + b;
saludo();console.log(suma(3, 5));
Parámetros opcionales
function saludar(nombre, apellido = "Desconocido") { console.log(`Hola, ${nombre} ${apellido}`);}saludar("Juan");
Funciones de orden superior
function ejecutar(funcion) { funcion();}
ejecutar(() => console.log("Ejecutando función anónima"));
🔹 Colecciones (Arrays, Sets y Maps)
Arrays
let lista = ["JS", "Node", "React"];lista.push("Vue");console.log(lista);
Sets (Colecciones sin duplicados)
let conjunto = new Set(["JS", "Node", "JS"]);console.log(conjunto); // {"JS", "Node"}
Mapas (Diccionarios clave-valor)
let mapa = new Map();mapa.set("nombre", "Carlos");mapa.set("edad", 25);console.log(mapa.get("nombre"));
🔹 Bucles en JavaScript
For clásico
for (let i = 0; i < lista.length; i++) { console.log(lista[i]);}
For-of
for (let item of lista) { console.log(`📝 ${item}`);}
While y Do-While
let contador = 0;while (contador < 3) { console.log(`Iteración ${contador}`); contador++;}
do { console.log(`Iteración ${contador}`); contador++;} while (contador < 6);
🔹 OOP en JavaScript
class Persona { constructor(nombre, edad) { this.nombre = nombre; this.edad = edad; }
presentarse() { console.log(`Hola, soy ${this.nombre} y tengo ${this.edad} años.`); }}
let p = new Persona("Carlos", 30);p.presentarse();
🔹 Enumeraciones (No existen nativamente en JS, pero se pueden simular)
const Lenguajes = Object.freeze({ JS: "JavaScript", TS: "TypeScript", PY: "Python"});
console.log(`Lenguaje seleccionado: ${Lenguajes.JS}`);
🔹 Manejo de Excepciones
try { let resultado = 10 / 0;} catch (e) { console.log(`❌ Error: ${e.message}`);} finally { console.log("Este bloque siempre se ejecuta");}
🔹 Programación Asíncrona en JavaScript
async function obtenerDatos() { console.log("⌛ Cargando datos..."); await new Promise(res => setTimeout(res, 2000)); console.log("✅ Datos cargados");}
obtenerDatos();
🔹 Mixins en JavaScript
const Caminante = { caminar() { console.log("Estoy caminando..."); }};
class Persona {}Object.assign(Persona.prototype, Caminante);
let p = new Persona();p.caminar();
🔹 Extensiones en JavaScript
String.prototype.enMayusculas = function () { return this.toUpperCase();};
console.log("js".enMayusculas()); // "JS"
Hello, JavaScript! 🚀