Diego Betto's Blog
Foto di raffaele brivio

Diego Betto · 20 febbraio 2025 · 3 min di lettura

javascript:void(0), cos'è?

Cos'è e a cosa serve l'istruzione javascript:void(0), vediamolo con qualche semplice esempio

Condividi:XLinkedInFacebookWhatsApp

Che cos’è javascript:void(0)?

A volte capita di trovare nel codice di una pagina HTML una stringa come la seguente

<a href="javascript:void(0)">Cliccami</a>

Ma a cosa serve? In questo caso stiamo dicendo al browser che quando un utente cliccherà su quel link non dovrà accadere nulla.

A volte trovate anche questa forma

<a href="#">Cliccami</a>

Perfettamente lecita e valida ma con un piccolo rischio: lo scroll della pagina verso l’alto, verso il top della pagina.

Infatti solitamente possiamo usare link nella forma

<a href="#ancora-nella-pagina">Cliccami</a>

per far spostare lo scroll della pagina ad un elemento con id="ancora-nella-pagina".

Perchè usare JavaScript?

Se andate a leggere la documentazione ufficiale di void su MDN troverete che void valuta l’espressione che gli passiamo e poi ritorna undefined.

Un browser quando trova un URI dentro un link nella forma javascript: esegue il codice e poi rimpiazza il contenuto della pagina con il valore di ritorno, a meno che il codice o la funzione non ritornino undefined.

<a href="javascript:void(0);">Clicca qui per non fare nulla</a>

<a href="javascript:void(document.body.style.backgroundColor='green');">
  Clicca qui per uno sfondo verde della pagina
</a>

⚠ Evitatelo

Quella dell’esempio è una pratica ormai caduta in disuso. Evitate di usarla. Meglio utilizzare degli event handler ad hoc. Considerate questo come un “vecchio trucchetto”.

Utilizzi di void in JavaScript

Possiamo comunque utilizzare void per altri scopi, quelli per i quali è stato ideato.

Immaginate di aver scritto un event handler per un checkbox. Al click vogliamo che esegua una qualche operazione. Potremmo scrivere una cosa di questo tipo.

checkbox.onclick = () => eseguiOperazione();

Al click sulla checkbox viene eseguita la funzione e poi il chekcbox cambia stato.

MA

Se per caso la funzione in una situazione particolare ritorna ad esempio false il flusso di azioni si interrompe e il checkbox non cambia stato. Se è una cosa voluta non è un problema. Se però non è voluta e vogliamo evitarlo possiamo scrivere l’event handler in questa forma:

checkbox.onclick = () => void eseguiOperazione();

Questo fa in modo che se per caso qualcuno un domani cambia quella funzione in un modo non previsto verrà in ogni caso ignorato il valore di ritorno e non bloccheremo il comportamento di default del checkbox.

Un’altro modo di utilizzare void è quello di eseguire una funzione e scartare subito il valore di ritorno.

void function () {
  console.log("Boom!");
}();

Attenzione alle precedenze

void risolve le espressioni con una ben definita precedenza, alla quale è bene fare attenzione per evitare risultati non voluti. Considerate questi due esempi presi sempre da MDN

void 2 === "2"; 
void (2 === "2");

Quello che viene interpretato ed eseguito è quanto segue:

(void 2) === '2' // returns false
void (2 === '2') // returns undefined

Infatti viene eseguito il primo elemento appena dopo void. Nella prima riga il primo elemento è il numero 2. Nella seconda riga il primo elemento dopo void è il contenuto delle parentesi.

Funzioni eseguite e poi PUFF non ci sono più

Quando usate void la funzione o l’espressione in generale viene eseguita e viene ritornanto undefined. Attenzione che l’eventuale funzione che avete utilizzato non esiste più dopo l’esecuzione.

void function test() {
  console.log("test function executed");
};
try {
  test();
} catch (e) {
  console.log("test function is not defined");
  // output: "test function is not defined"
}

Buon coding! 😃

Condividi:XLinkedInFacebookWhatsApp
Diego Betto

Scritto da

Diego Betto

Co-Fondatore & CTO presso PAPION. Senior full-stack engineer specializzato in React, TypeScript, Node.js e sicurezza applicativa.