¿Qué son los empty-statement en javascript? ¿Existen casos de uso?

Javascript tiene ciertas peculiaridades que en ciertos momentos resultan ser importantes, o al menos interesantes, de conocer. Puede que los empty-statement sean de esas peculiaridades de JavaScript que resultan no ser tan necesarias o al menos no con tantos casos de uso.

¿Qué es un statement?

una sentencia (statement) es una unidad sintáctica de un lenguaje de programación imperativo que expresa alguna acción a realizar. Podemos decir que son las unidades ejecutable más pequeña de un programa.

Si tiene una línea de código que dice var x= 10; consola.log(x); eso es una línea y 2 sentencias.

¿Qué son los empty-statement en javascript?

Un empty-statement o sentencia vacía es usada para no proveer una sentencia, incluso si la sintaxis JavaScript esperase una. En pocas palabras un empty-statement es un ; (punto y coma).

Una sentencia vacía no proporciona ninguna declaración aunque JavaScript la espere. La declaración no tiene ningún efecto y no realiza ninguna acción.

Un ejemplo típico sería crear un bucle for que no tenga cuerpo.

var arr = [1, 2, 3];

// Asignar el valor 0 a todos los elementos del array
for (i = 0; i < arr.length; arr[i++] = 0) /* sentencia vacía */ ;

console.log(arr);
// [0, 0, 0]

Siempre se recomienda añadir un comentario a nuestro código cuando estamos utilizando sentencias vacías de forma intencional.

Un ejemplo de un uso no intencional (Mozilla Doc):

if (condicion);  // Esta condición no ejerce ningún control!
   borrarTodo()  // Por lo cual esta sentencia será ejecutada siempre!!!

Algunos ejemplos de uso

Asigna a 'b' el valor cero si 'a' no es cero.

var a = 1, b = 1;
if((a == 0) || (b = 0));
console.log(b); // 0

Cadenas de if-else, para excluír ciertas condiciones

const name = "Fernando";

if (name === "Barrios")
    console.log(name);
else if (name === "Fernando")
    console.log(`Hola ${name}`); // Hola Fernando
else if (name === "Juan"); // No se realiza ninguna acción si el nombre pasado es "Juan"
else if (name === "Carlos")
    console.log(`Gusto en verte ${name}`);
else
    console.log("Adiós");

Para evitar un comportamiento no deseado en IIFE, en algún momento querrá anteponerlo con una declaración vacía

;(()=>console.log('hola'))()

Esperar a que una condición se cumpla

while ( !condition );
// haz lo que sucede una vez que se cumple tu condición

Referencias:

  1. The Empty Statement
  2. Empty Statement
  3. What is the point of using empty statement in JavaScript?