void
. Este es un curioso recurso, bastante utilizado al inicio de Javascript, y que ha quedado en desuso. No obstante, tiene algunas características que pueden ser interesantes.void
void
es un operador en Javascript y se puede utilizar de estas dos formas:
void (expresion)
void expresion
El operador void
indica que se evaluará la expresión que le sigue sin devolver ningún valor (o lo que es lo mismo, devolviendo undefined
). Los paréntesis son completamente opcionales.
Código en blanco
En ocasiones nos interesa dejar partes del código intencionadamente sin contenido, por ejemplo, cuando queremos capturar un error, pero no queremos hacer nada con él y simplemente lo ignoramos.
try { JSON.parse(texto); } catch(err) { }
Es común que en esos casos algún otro programador no comprenda el código, o nosotros mismos tras algún tiempo cuando volvamos a leer estas instrucciones sospechemos que nos dejamos algo sin terminar.
Un muy simple solución es escribir un comentario del tipo:
try { JSON.parse(texto); } catch(err) { // Este código se ha dejado intencionadamente en blanco }
Otra solución, que aplicamos algunos de los más viejos programadores en Javascript es utilizar void (0)
.
try { JSON.parse(texto); } catch(err) { void(0); }
La línea void(0)
lo que hace es evaluar 0
y no devolver nada, lo cual es equivalente a no hacer nada.
Operador ternario
En ocasiones al utilizar el operador ternario, sobre todo uno dentro de otro, nos podemos encontrar que tenemos que poner algo en la última instrucción, pero no queremos hacer nada específico en ese caso. De nuevo podemos utilizar el void (0)
.
a < 10 ? x = 1 : a < 20 ? z = 2 : void(0);
Evidentemente este código podríamos haberlo estructurado de otra forma y, seguramente, sería más fácil de leer y evitaríamos el uso de void (0)
, pero desde luego es un codigo válido y compacto, lo cual puede ser de agradecer en algunos casos.
Enlace en HTML
Esta expresión void(0)
se popularizó en HTML como un enlace de un ancla (A
) que no queremos que se dirija a ningún sitio. La expresión se evalúa pero no se carga o se desplaza la página.
<a href"javascript:void(0)"> Haga click aquí para no hacer nada </a> | <a href"javascript:void(document.body.style.backgroundColor='green')"> Haga click aqui para cambiar el color de fondo </a>
Como podemos ver en el segundo caso, también se puede utilizar para evitar el retorno de la llamada a una expresión Javascript dentro del enlace.
Invocación directa de una función
Se puede utilizar para invocación directa de una función:
void function() { //... }();
La función se ejecutará directamente, ya que void
evalua la expresion que tiene a su derecha y esta tiene ()
al final de la misma.
Evitar el retorno
También se puede utilizar void
parar evitar devolver el valor retornado por una función, por ejemplo, en un arrow function:
const myFunc = () => void otherFunc();
Conclusión
El operador void
tiene una funcionalidad relativamente reducida, pero es interesante conocerlo y aprovechar su comportamiento en aquellos casos donde lo necesitemos.
Novedades
HTTP2 para programadores. Enviar mensajes del servidor al cliente con Server Sent Event (sin WebSockets)
En esta charla, organizada por MadridJS, Pablo Almunia nos muestra cómo la mayoría de nosotros cuando oímos hablar por primera vez de HTTP2 nos ilusionamos con las posibilidades que presumiblemente se abrían para el desarrollo de soluciones web avanzadas y cómo muchos nos sentimos defraudados con lo que realmente se podía implementar.
En esta charla podemos ver cómo funciona el HTTP2, que debemos tener en cuenta en el servidor para hace uso de este protocolo y, sobre todo, cómo podemos enviar información desde el servidor al cliente de forma efectiva y fácil. Veremos con detenimiento cómo por medio de los Server-Sent Events (SSE) podemos recibir en el cliente datos enviados desde el servidor sin utilizar websocket, simplificando enormemente la construcción de aplicaciones con comunicación bidireccional.
Observables en Javascript con Proxies
En esta charla, organizada por MadridJS, Pablo Almunia nos habla de la observación reactiva de objetos en Javascript por medio de Proxy. Se describe paso a paso cómo funcionan los Proxies y en que casos pueden ser nuestro mejor aliado. Veremos que no hay que tenerles miedo, son bastante sencillos de utilizar, y nos ofrecen una gran abanico de posibilidades.
Aplicaciones JAMStack, SEO friendly y escalables con NextJS
En esta charla de Madrid JS, Rafael Ventura nos describe las funcionalidades clave de NextJS, nos muestra en vivo cómo desarrollar una completa aplicación JAMStack con Server Side Rendering (SSR) y Static Site Generation (SSG) y termina mostrando como publicar esta aplicación en Vercel.
Stencil JS: mejora el Time To Market de tu producto, por Rubén Aguilera
En esta charla Rubén Aguilera nos cuenta los problemas que tienen muchas empresas a la hora de sacar productos accesibles, vistosos y usables en el Time To Market que requiere Negocio y cómo podemos minimizar este tiempo gracias al DevUI con StencilJS para adecuar una aplicación de Angular a las exigencias del mercado en tiempo record.