JS: Sintaxis

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; 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));

Además, conviene indicar que el punto y coma se usa 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 (if, for, function) deben escribirse tal y como corresponde, y que los nombres de funciones, variables y otros identificadores personales deben mantenerse de forma consistente.

Es decir, que si queremos definir una función con Function o un condicional con IF, el intérprete devolverá error. Por otra parte, si definimos la función sumar pero luego la invocamos con SumAr, tampoco va a funcionar.

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 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 usar varias palabras en un identificador, puede hacerse usando 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 de JavaScript

En JavaScript existe un conjunto de palabras reservadas que forman parte de la sintaxis del lenguaje. Estas palabras tienen un significado especial y no se pueden usar como identificadores de variables, funciones o clases.

En orden alfabético, las palabras reservadas son las siguientes: break, case, catch, class, const, continue, debugger, default, delete, do, else, export, extends, false, finally, for, function, if, import, in, instanceof, new, null, return, super, switch, this, throw, true, try, typeof, var, void, while y with.

Tipos de datos

JavaScript es un lenguaje de tipado dinámico, por lo que no es necesario declarar el tipo de variable al momento de crearla. El intérprete se encarga de asignar el tipo de dato de forma automática según el valor que reciba.

Lista de tipos de datos:

  • BigInt
  • Boolean
  • Null
  • Number
  • Object
  • String
  • Symbol
  • Undefined

Objetos y arrays

En JavaScript, los objetos son colecciones de pares de datos clave-valor, donde las claves son los nombres de las propiedades y los valores pueden ser cualquier tipo de dato. Se representan con las llaves ({}). Por ejemplo:

let lenguaje = {
  nombre: "JavaScript",
  creador: "Brendan Eich"
}

Los arrays son listas ordenadas de elementos fácilmente accesibles mediante un índice numérico, empezando desde 0. Pueden contener elementos de diferentes tipos de datos en la misma colección. Se crean con corchetes ([]), así:

let lenguajes = ["html", "css", "js"]

Operadores

Los operadores son símbolos especiales que permiten realizar operaciones sobre valores de variables y constantes. Pueden ser de distintos tipos y abarcan cálculos matemáticos, asignación, comparación y evaluaciones lógicas.

  • Aritméticos: +, -, *, /, % y **.
  • De asignación: =, +=, -= y *=.
  • De comparación: ==, ===, !=, !==, <, >, <= y >=.
  • Lógicos: &&, || y !.
← Artículo anterior
Artículo siguiente →