Introduccion a JavaScript
JavaScript es uno de los lenguajes de programacion mas populares del mundo. Se utiliza para crear sitios web interactivos, aplicaciones web, backends con Node.js, aplicaciones moviles y mucho mas. Es un lenguaje de alto nivel, dinamico, interpretado y multiparadigma. A diferencia de lo que su nombre sugiere, no tiene relacion con Java.
Creado en 1995, JavaScript comenzo como un lenguaje de scripting para navegadores y evoluciono hasta convertirse en la base de la web moderna. En 2026 sigue siendo esencial, con caracteristicas modernas como async/await, optional chaining, nullish coalescing, iteradores perezosos y mejoras en el manejo de fechas y errores. Este manual cubre los fundamentos necesarios para escribir codigo JavaScript correcto y legible, actualizados a las practicas actuales.
El enfoque se centra en el lenguaje en si, separado de las APIs del navegador o de Node.js. Comprender estos conceptos permite construir sobre ellos en cualquier entorno.
Sintaxis basica y valores
JavaScript ignora el espacio en blanco adicional, lo que permite formatear el codigo de forma flexible. Se recomienda un estilo consistente mediante herramientas de formateo. El lenguaje es sensible a mayusculas y minusculas: nombre y Nombre son identificadores distintos.
Los literales representan valores escritos directamente en el codigo, como numeros, cadenas, booleanos, arrays y objetos. Los identificadores nombran variables, funciones y objetos; deben comenzar con una letra, guion bajo o signo de dolar y pueden incluir digitos y caracteres Unicode.
Los comentarios de una linea usan // y los de multiples lineas usan /* */. Los puntos y comas son opcionales gracias a la insercion automatica, aunque muchos equipos los incluyen por claridad. En codigo moderno se prefiere un estilo consistente.
Variables y tipos de datos
Las variables almacenan valores. Se declaran con const cuando la referencia no debe cambiar o con let cuando se necesita reasignacion. var esta en desuso por su alcance de funcion y problemas de hoisting.
const pi = 3.1416;
let contador = 0;
contador = 1;
const exige inicializacion y no permite reasignar la variable, aunque el contenido de objetos y arrays si puede modificarse. Preferir const reduce errores accidentales.
Los tipos primitivos incluyen number, string, boolean, symbol, bigint, null y undefined. Los tipos no primitivos son objetos, que incluyen arrays y funciones. JavaScript es de tipado dinamico: una variable puede contener diferentes tipos a lo largo de su vida, aunque las anotaciones de tipo en TypeScript se han vuelto habituales en proyectos profesionales.
Expresiones y operadores
Una expresion evalua a un valor. Los operadores aritmeticos incluyen suma, resta, multiplicacion, division, resto y potenciacion. El operador + tambien concatena cadenas.
const suma = 1 + 2;
const texto = "Hola " + "mundo";
const potencia = 2 ** 3;
La precedencia sigue reglas similares a las matematicas: multiplicacion y division antes que suma y resta. Los parentesis aclaran el orden cuando es necesario. Los operadores de comparacion devuelven booleanos. Se prefiere la igualdad estricta === sobre == para evitar coerciones de tipo inesperadas.
Los operadores logicos &&, || y ! combinan condiciones. En codigo moderno se utilizan optional chaining (?.) y nullish coalescing (??) para manejar valores nulos o indefinidos de forma segura.
Condicionales y bucles
Las sentencias if, else if y else dirigen el flujo segun condiciones. Las llaves delimitan bloques de codigo.
if (edad >= 18) {
console.log("Mayor de edad");
} else {
console.log("Menor de edad");
}
Los bucles while y do while repiten mientras una condicion sea verdadera. El bucle for clasico controla un indice. El bucle for...of recorre los valores de un iterable de forma clara:
const frutas = ["manzana", "pera", "uva"];
for (const fruta of frutas) {
console.log(fruta);
}
break sale del bucle y continue salta a la siguiente iteracion. En 2026 los metodos de array como forEach, map y filter se prefieren cuando el objetivo es transformar o seleccionar datos de forma declarativa.
Arrays y cadenas
Los arrays almacenan colecciones ordenadas de valores, que pueden ser de tipos mixtos. Se crean con literales o con el constructor Array. El acceso es por indice basado en cero. La propiedad length indica el numero de elementos.
const numeros = [1, 2, 3];
numeros.push(4);
const primero = numeros[0];
Metodos como push, pop, shift, unshift, concat y el operador spread permiten manipular arrays. find, includes y filter localizan o seleccionan elementos. Las cadenas son secuencias de caracteres. Los template literals con backticks permiten interpolacion y cadenas multilinea:
const nombre = "Ana";
const saludo = `Hola, ${nombre}!`;
Funciones y funciones flecha
Las funciones encapsulan logica reutilizable. Se declaran con la palabra function o como expresiones. Pueden recibir parametros, tener valores por defecto y devolver resultados con return.
function saludar(nombre = "invitado") {
return `Hola, ${nombre}`;
}
Las funciones flecha ofrecen una sintaxis mas corta y no tienen su propio this. Son ideales para callbacks y funciones simples:
const duplicar = (numero) => numero * 2;
Las funciones pueden anidarse y el alcance determina la visibilidad de las variables. En codigo moderno se prefieren funciones puras cuando es posible y se evita el uso excesivo de variables globales.
Objetos, metodos y clases
Los objetos agrupan propiedades y metodos. Se crean con literales y se accede a sus propiedades con notacion de punto o corchetes.
const persona = {
nombre: "Luis",
edad: 30,
saludar() {
console.log(`Hola, soy ${this.nombre}`);
},
};
Las clases, introducidas en ES6, proporcionan una sintaxis mas clara para definir plantillas de objetos. Soportan constructores, metodos, herencia y campos privados en versiones recientes.
class Persona {
constructor(nombre) {
this.nombre = nombre;
}
saludar() {
console.log(`Hola, soy ${this.nombre}`);
}
}
const p = new Persona("Maria");
La herencia se realiza con extends y super. Los metodos magicos y los getters/setters permiten personalizar el comportamiento.
Programacion asincrona
JavaScript es monohilo y utiliza un bucle de eventos para manejar operaciones asincronas. Los callbacks fueron el mecanismo original, seguidos por Promises y finalmente por async/await, que permite escribir codigo asincrono con apariencia sincrona.
async function obtenerDatos() {
try {
const respuesta = await fetch("/api/datos");
const datos = await respuesta.json();
return datos;
} catch (error) {
console.error(error);
}
}
Las Promises representan un valor que estara disponible en el futuro. async marca una funcion que devuelve una Promise y await pausa la ejecucion hasta que la Promise se resuelve. El manejo de errores se realiza con try/catch. En 2026 estas construcciones son el estandar para operaciones de red, archivos y temporizadores.
Alcance y mejores practicas modernas
El alcance de bloque introducido por let y const evita fugas de variables. Se recomienda declarar variables cerca de su uso y preferir const. El modo estricto ("use strict") elimina comportamientos ambiguos, aunque en modulos ES es el comportamiento por defecto.
Optional chaining y nullish coalescing reducen comprobaciones defensivas. Los modulos ES permiten organizar el codigo en archivos separados con import y export. En proyectos profesionales se utilizan herramientas de linting y formateo, y TypeScript anade tipado estatico sobre JavaScript.
Conclusiones
JavaScript ofrece una base solida y flexible para el desarrollo de software. Dominar variables, tipos, operadores, estructuras de control, arrays, funciones, objetos y programacion asincrona permite construir aplicaciones reales. Las practicas modernas de 2026, como el uso preferente de const, las funciones flecha, async/await y las caracteristicas de seguridad como optional chaining, hacen el codigo mas legible y menos propenso a errores. Este manual proporciona los fundamentos necesarios para continuar aprendiendo frameworks, Node.js o TypeScript. La practica constante con pequenos programas consolida estos conceptos y abre la puerta a proyectos mas complejos en el ecosistema web.
