Si consideri il seguente:
<a href="javascript:void(fish=document.getElementById('foo').value);void(document.getElementById('bar').value=fish);">With Void</a>
<a href="javascript:fish=document.getElementById('foo').value;document.getElementById('bar').value=fish;">Without Void</a>
<input type="text" id="foo" value="one fish" />
<input type="text" id="bar" value="no fish" />
Il primo collegamento sarà scambiare i valori dei campi di testo. Il secondo link aprirà una nuova pagina con il testo "un pesce". Se si utilizza uno javascript: link
, nel momento in cui un'espressione restituisce qualcosa di diverso da null
o undefined
, il browser interpreterà ciò come il collegamento dovrebbe fare. Con il wrapping di tutte le espressioni/statistiche in una funzione void()
, si garantisce che l'intero snippet di codice verrà eseguito. Al giorno d'oggi, questo è principalmente utilizzato in Bookmarklet, poiché l'utilizzo di un attributo onclick
o l'impostazione di gestori di eventi in blocchi/file JavaScript separati è la "norma".
Per quanto riguarda javascript:
rispetto a javascript:void()
, la prima affermazione è ambigua. Stai dicendo "hey, voglio eseguire qualche javascript", ma non fornisci alcun codice. Non è necessariamente chiaro cosa dovrebbe fare il browser qui. Con la seconda affermazione stai dicendo "ehi, esegui qualche javascript", e il tuo codice alla fine ritorna indefinito, che il browser sa che significa "non fare nulla".
Dato che sono qui, farò anche notare che usare javascript:
o javascript:void();
è caduto in disgrazia con la maggior parte delle persone che si preoccupano del markup. La cosa migliore da fare è che il gestore onclick restituisca false e che il link sia indirizzato verso una pagina/risorsa che abbia senso per le persone con javascript disattivato o che utilizzano un blocco JavaScript come NoScript.
fonte
2009-03-20 16:54:37
vuoto è un operatore che non restituisce nulla dopo aver valutato una determinata espressione, non è necessario utilizzare "(" e ")" per farlo funzionare. – Cleiton
sizeof è lo stesso in C, ma quel codice è molto più chiaro se vengono utilizzate le parentesi. – olliej
'void' è usato raramente. In ES5 è considerato obsoleto. Dopo la valutazione del suo operando restituisce 'undefined' – jjpcondor