Sintaxis básica de JavaScript: sentencias, llaves y punto y coma
📚 Contenido de la guía ⌃
- El mapa mental de la sintaxis: sentencias, bloques y terminadores ✍️
- Cómo piensa el motor de JavaScript
- Qué es una sentencia en JavaScript (y qué no lo es)
- Expresión vs sentencia: la diferencia que aclara todo
- Punto y coma: por qué JavaScript “aguanta” sin él (y cuándo deja de hacerlo)
- Tres casos en los que ASI puede romper tu código
- Llaves { } y bloques: cómo agrupa código JavaScript
- ¿Es obligatorio usar llaves en un if o un bucle?
- Dónde colocar las llaves: estilo y legibilidad
- Buenas prácticas para sentencias, llaves y punto y coma
- Conclusión: la sintaxis básica es tu mejor seguro anti-bugs
Antes de hablar de frameworks, promesas o APIs modernas, hay tres piezas de la sintaxis de JavaScript que mandan sobre todo lo demás: las sentencias, las llaves { } y el punto y coma ;. Entender cómo piensa el motor sobre estos tres elementos evita bugs raros, código confuso y horas de depuración.
En esta guía vamos a construir un mapa mental de la sintaxis básica: qué es realmente una sentencia, cómo agrupan código las llaves, cuándo es obligatorio el punto y coma y qué problemas produce la “inserción automática de punto y coma” (ASI). La idea no es aprender reglas de memoria, sino entender cómo lee el motor tu código para que puedas escribir JavaScript más claro y predecible.
El mapa mental de la sintaxis: sentencias, bloques y terminadores ✍️
Cuando escribes JavaScript, el motor ve tu archivo como una secuencia de piezas que se organizan más o menos así:
- Expresiones: cosas que producen un valor (
2 + 2,user.name,sum(1, 2)). - Sentencias (statements): instrucciones completas que el motor ejecuta (
let x = 1;,if (...) { ... },return 42;). - Bloques
{ }: grupos de sentencias que se ejecutan juntos (cuerpos de funciones, deif, de bucles). - Terminadores: el famoso
;, que indica dónde termina una sentencia… y donde empiezan muchos malentendidos.
Si tienes claro qué es una sentencia, qué hace un bloque y cuándo el punto y coma es necesario, el resto de la sintaxis se vuelve mucho más predecible.
Cómo piensa el motor de JavaScript
Qué es una sentencia en JavaScript (y qué no lo es)
Una sentencia es una instrucción completa que el motor puede ejecutar por sí sola. Termina en un punto y coma ; (explícito o implícito) y responde a la idea de “haz esto”:
// Ejemplos de sentencias
let edad = 32;
const nombre = "Ana";
saludar(nombre);
if (edad >= 18) {
console.log("Es mayor de edad");
}
return edad;
Cada una de esas líneas (o bloques) es una sentencia: el motor las ejecuta en orden, de arriba a abajo, dentro del bloque actual.
Expresión vs sentencia: la diferencia que aclara todo
Una expresión es algo que produce un valor, pero por sí sola no “hace” nada hasta que la usamos dentro de una sentencia:
// Expresión:
2 + 2
// Sentencia:
let resultado = 2 + 2;
La expresión 2 + 2 produce el valor 4. La sentencia let resultado = 2 + 2; declara una variable y le asigna ese valor. Entender esta diferencia ayuda a leer mejor if, while, for y muchos errores de sintaxis.
| Tipo | Ejemplo | Comentario |
|---|---|---|
| Expresión | user.age >= 18 |
Produce true o false. |
| Sentencia | if (user.age >= 18) { ... } |
Usa la expresión para decidir qué bloque ejecutar. |
| Expresión | sum(1, 2) |
Produce el resultado de la función. |
| Sentencia | const total = sum(1, 2); |
Guarda el resultado en una variable. |
Punto y coma: por qué JavaScript “aguanta” sin él (y cuándo deja de hacerlo)
En muchos ejemplos verás código sin punto y coma al final de cada línea. Eso es posible porque JavaScript tiene una característica llamada ASI (Automatic Semicolon Insertion): cuando el motor detecta el final de una sentencia, puede insertar un punto y coma por ti.
Por ejemplo, estos dos fragmentos se comportan igual:
// Con punto y coma explícito
let x = 1;
let y = 2;
console.log(x + y);
// Con ASI (el motor inserta los ;)
let x = 1
let y = 2
console.log(x + y)
Hasta aquí, todo bien. El problema es que no siempre coincide tu intuición con las reglas reales de ASI, y ahí nacen bugs muy sutiles.
Regla práctica: en proyectos serios, usa siempre punto y coma explícito. Reduce sorpresas con ASI, hace los diffs más claros y evita varios bugs históricos.
Tres casos en los que ASI puede romper tu código
Veamos ejemplos reales donde faltar un punto y coma cambia el significado del programa.
1) return en su propia línea
function obtenerUsuario() {
return
{
nombre: "Ana"
}
}
A primera vista parece que la función devuelve un objeto. Pero el motor ve esto así:
function obtenerUsuario() {
return; // ← aquí inserta el punto y coma
{
nombre: "Ana"
}
}
Resultado: la función devuelve undefined y el objeto nunca se usa. Por eso es buena práctica no dejar el valor de return en la siguiente línea o, al menos, usar siempre punto y coma consistente.
2) Líneas que empiezan con (, [ o /
Si una línea termina sin punto y coma y la siguiente empieza con ( o [, el motor puede interpretarlo como una llamada o acceso al resultado anterior:
const fn = () => {}
[1, 2, 3].forEach(n => console.log(n))
El motor puede leerlo así:
const fn = () => {};
[1, 2, 3].forEach(...)
Lo que es algo completamente distinto a lo que querías. Un simple ; al final de la primera línea lo evita:
const fn = () => {};
[1, 2, 3].forEach(n => console.log(n));
3) Funciones autoejecutadas (IIFE)
const x = 1
(function () {
console.log("Hola");
})();
Comentarios y Valoraciones
No hay comentarios aún. ¡Sé el primero en opinar!