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