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.14Booleans
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! 🚀