considerar lo siguiente:
<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" />
El primer enlace intercambiará los valores de los campos de texto. El segundo enlace abrirá una nueva página con el texto "un pez". Si usa un javascript: link
, el minuto en que una expresión devuelva algo distinto de null
o undefined
, el navegador lo interpretará como lo que debería hacer el enlace. Al envolver todas las expresiones/declaraciones en una función void()
, se asegura de que se ejecute todo el fragmento de código. Hoy en día, esto se usa principalmente en Bookmarklets, ya que el uso de un atributo onclick
, o la configuración de controladores de eventos en bloques/archivos Javascript separados es la "norma".
En cuanto a javascript:
vs javascript:void()
, la primera declaración es ambigua. Usted está diciendo, "oye, quiero ejecutar algunos javascript", pero luego no proporciona ningún código. No está necesariamente claro qué debe hacer el navegador aquí. Con la segunda afirmación, dices "hey, ejecuta algunos javascript", y tu código finalmente devuelve indefinido, lo que el navegador sabe significa "no hacer nada".
Como estoy aquí, también señalaré que usar javascript:
o javascript:void();
ha caído en desgracia con la mayoría de las personas que se preocupan por el marcado. Lo mejor que puede hacer es hacer que su manejador onclick devuelva false, y hacer que el enlace apunte hacia una página/recurso que tenga sentido para las personas que tienen javascript desactivado, o si están usando un bloqueador de JavaScript como NoScript.
void es un operador que no devuelve nada después de evaluar una expresión determinada, no necesita usar "(" y ")" para que funcione. – Cleiton
sizeof es lo mismo en C, pero ese código es mucho más claro si se utilizan paréntesis. – olliej
'void' se usa con poca frecuencia. En ES5 se considera obsoleto. Después de la evaluación de su operando, devuelve 'undefined' – jjpcondor