Beachten Sie Folgendes:
<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" />
Der erste Link, um die Werte der Textfelder tauschen wird. Der zweite Link öffnet eine neue Seite mit dem Text "Ein Fisch". Wenn Sie einen javascript: link
verwenden, interpretiert der Browser die Minute, in der ein Ausdruck etwas anderes als null
oder undefined
zurückgibt, was der Link tun sollte. Wenn Sie alle Ausdrücke/Anweisungen in eine void()
-Funktion einschließen, stellen Sie sicher, dass Ihr gesamtes Code-Snippet ausgeführt wird. Heutzutage ist dies vor allem in Bookmarklets von Nutzen, da die Verwendung eines onclick
Attributs oder das Einrichten von Event Handlern in separaten Javascript Blöcken/Dateien die "Norm" ist.
Wie für javascript:
vs. javascript:void()
, ist die erste Aussage mehrdeutig. Du sagst: "Hey, ich möchte etwas Javascript ausführen", aber dann gibst du keinen Code an. Es ist nicht unbedingt klar, was der Browser hier tun soll. Mit der zweiten Aussage sagst du "hey, mach etwas Javascript", und dein Code kehrt schließlich undefiniert zurück, was der Browser weiß, bedeutet "tue nichts".
Seit ich hier bin, werde ich auch darauf hinweisen, dass die Verwendung von javascript:
oder javascript:void();
bei den meisten Leuten, die sich um Markup kümmern, in Ungnade gefallen ist. Besser ist es, wenn Ihr onclick-Handler false zurückgibt und der Link auf eine Seite/Ressource zeigt, die für Leute, die Javascript deaktiviert haben, sinnvoll ist oder einen JavaScript-Blocker wie NoScript verwendet.
void ist ein Operator, der nach dem Auswerten eines Ausdrucks keinen Wert zurückgibt. Sie müssen nicht "(" und ")" verwenden, damit er funktioniert. – Cleiton
sizeof ist das gleiche in C - aber dieser Code ist viel klarer, wenn Klammern verwendet werden. – olliej
'void' wird selten verwendet. In ES5 gilt es als veraltet. Nach Auswertung seines Operanden gibt es 'undefined' zurück – jjpcondor