La sintaxis de JavaScript es el conjunto de reglas o normas básicas que definen cómo escribir un código válido, limpio, legible y eficiente. Estas reglas determinan aspectos gramaticales, estructurales y de organización del código para que el intérprete lo pueda procesar sin que se produzcan errores.
Al ser un lenguaje interpretado, los navegadores y motores de ejecución leen y ejecutan el código línea por línea, de arriba a abajo. Si se detecta un error de sintaxis, la ejecución se detiene. Por tanto, es fundamental conocer y aplicar correctamente las reglas gramaticales de JavaScript.
La sintaxis de JavaScript guarda similitudes con lenguajes que lo influenciaron, como Java, C, Python, Perl, AWK y Scheme. Pero tiene características que lo convierten en un lenguaje único. En síntesis, es flexible y de tipado dinámico, ideal para crear programas complejos con una estructura sencilla.
Algunos ejemplos de su sintaxis: el uso del punto y coma (;) al final de cada declaración; las llaves ({}) para agrupar bloques de código; o los paréntesis (()) para encerrar condiciones y parámetros de funciones. Además, es sensible a mayúsculas y minúsculas y usa el conjunto de caracteres Unicode.
Estructura básica
Un programa escrito en lenguaje JavaScript está compuesto, básicamente, por sentencias (statements) de una o varias líneas, que se ejecutan de forma secuencial en orden de aparición, es decir, de arriba a abajo. Cada sentencia o declaración le indica al intérprete la acción que debe realizar.
En este ejemplo podemos ver dos sentencias:
let web = 'Recursivos';
alert(web);
En la primera sentencia se define la variable web que contiene una cadena de texto, y en la siguiente se muestra su valor en un mensaje de alerta.
El punto y coma al final
Las sentencias de JavaScript terminan con un punto y coma (;), tal y como figura en el ejemplo anterior. Se trata de una terminación opcional, pero es una buena práctica usarlo siempre para evitar errores en situaciones complejas.
Que sea opcional se debe al ASI (Automatic Semicolon Insertion), una regla que inserta los punto y coma de forma automática al final de cada sentencia. Lo que ocurre es que el ASI no siempre funciona como cabría esperar.
Por ejemplo, este código devolverá error:
let x = 5
[1, 2, 3].forEach(n => console.log(n))
Mientras que este otro funcionará correctamente:
let x = 5;
[1, 2, 3].forEach(n => console.log(n));
¿Cuándo se debe usar el punto y coma? Al final de sentencias simples, como declaraciones, asignaciones o expresiones, pero no se usa al final de bloques de código: los que terminan con }, como sería al final de un condicional, una función o un bucle. La única excepción ocurre cuando ese bloque forma parte de una expresión mayor, caso en el que sí debe colocarse el punto y coma.
Agrupación de bloques
Las llaves ({}) se utilizan con el fin de delimitar bloques de código, como sería el cuerpo de una función, un bucle o las sentencias de una estructura condicional. En este sentido, el código que se encuentra dentro de las llaves se interpreta como un único bloque y, por tanto, se ejecuta en conjunto.
Vamos a ver un condicional de ejemplo:
if (variable > 3) {
console.log('Es mayor que 3');
}
El uso de los paréntesis
Los paréntesis (()) permiten agrupar y encerrar porciones de código que deben evaluarse de forma conjunta o que forman parte de una estructura. En general, encierran condiciones, parámetros o expresiones.
- Agrupar operaciones matemáticas
- Encerrar condiciones a evaluar
- Invocar funciones pasando argumentos
- Crear funciones indicando parámetros
Por ejemplo:
function sumar(a, b) {
return a + b;
}
Sensibilidad a mayúsculas y minúsculas
JavaScript es un lenguaje que distingue entre mayúsculas y minúsculas (case-sensitive). Esto significa que las palabras clave (como if, for, function, etc) deben escribirse en minúsculas, y que los identificadores usados en nombres de variables o funciones deben mantenerse de forma consistente.
Por ejemplo:
IF (3 > 2) {
alert('¡Hola!');
}
El condicional IF, en mayúsculas, devolverá error.
Otro ejemplo:
let total = 25;
alert(Total); // Devuelve error
alert(total); // Devuelve 25
Si declaramos e inicializamos la variable total, en minúsculas, debemos seguir usándola con el mismo formato. Si la utilizamos escribiendo Total o TOTAL, el motor de ejecución de JavaScript devolverá error.
Reglas para nombrar identificadores
Cada vez que se crea una variable, una constante, una función o una clase en JavaScript, es necesario asignarle un nombre, conocido como identificador. Este identificador permite referirse a ese elemento en cualquier parte del programa, tantas veces como sea necesario. Elegir nombres adecuados y descriptivos nos ayudará mucho tanto en la legibilidad del código como en su comprensión.
Reglas básicas:
- No puede usarse palabras clave reservadas
- No pueden iniciar con números
- No pueden contener espacios
- No pueden contener símbolos especiales
- No pueden contener el guión medio (
-) - Pueden incluir el símbolo del dólar (
$) - Pueden incluir el guión bajo (
_)
Para crear identificadores con múltiples palabras, puede utilizarse la convención camelCase como opción recomendable: se empieza en minúsculas, y por cada palabra nueva se empieza con mayúscula, lo que facilita su lectura. Otra opción totalmente válida es separarlas con un guión bajo.
Ambos ejemplos son correctos:
let deDosPalabras = 'JS'
let de_dos_palabras = 'JS'
Palabras reservadas
En la creación de identificadores para variables, funciones o clases es importante evitar el uso de las palabras clave reservadas, ya que forman parte de la sintaxis del lenguaje. En caso de usarlas, el programa devolverá error.
Si bien es cierto que podrían emplearse al convertir una o varias de sus letras a mayúsculas, esta práctica no se considera recomendable porque puede llevar a confusiones o entorpecer la legibilidad y mantenimiento del programa.
Algunas de estas palabras son let, const, if, for, while… Pero haya muchas más. Tal y como se puede ver, son palabras reservadas para implementar las funcionalidades internas propias del lenguaje JavaScript.