89 votes

quel est le point du nul en javascript

J'ai semble que certaines personnes mettent leur code à l'intérieur de la fonction void. J'ai aussi vu cela dans hrefs: javascript:void(0) qui ne semble pas mieux que l'écriture javascript:;

Alors, quelle est la justification de l'utilisation de la fonction void?

65voto

Crescent Fresh Points 54070

Explication de son utilisation dans les liens:

<snip>

C'est la raison pour laquelle favoris souvent placer le code dans void() ou une fonction anonyme qui n'a pas retour quelque chose pour arrêter le navigateur d'essayer d'afficher le résultat de l'exécution de la bookmarklet. Pour exemple:

javascript:void(window.open("dom_spy.html"))

Si vous utilisez directement le code qui renvoie quelque chose (une nouvelle fenêtre instance dans ce cas), le navigateur sera à la fin afficher:

javascript:window.open("dom_spy.html");

Dans Firefox ci-dessus va afficher:

[object Window]

</snip>

15voto

Alan Storm Points 82442

Considérez les points suivants:

<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" />

Le premier lien échange les valeurs des champs de texte. Le deuxième lien ouvrira une nouvelle page avec le texte "un poisson". Si vous utilisez un javascript: link, la minute d'une expression renvoie autre chose que de l' null ou undefined, le navigateur va interpréter cela comme ce que le lien devrait le faire. En les enveloppant de toutes les expressions/relevés en void() fonction, vous assurez l'ensemble de votre extrait de code sera exécuté. Ces jours-ci, il s'agit principalement de l'utilisation de Favoris, comme à l'aide d'un onclick d'attribut, ou la mise en place de gestionnaires d'événements dans séparent les blocs Javascript/fichiers est la "norme".

Comme pour javascript: vs javascript:void(), la première phrase est ambiguë. Vous êtes en train de dire, "hé, je veux exécuter javascript", mais alors vous n'avez pas de code. Ce n'est pas forcément clair que le navigateur doit se faire ici. Avec la deuxième déclaration, vous dites "hey, exécuter javascript", et votre code renvoie finalement pas défini, le navigateur sait, signifie "ne rien faire".

Depuis que je suis ici, je vais aussi souligner que l'utilisation soit javascript: ou javascript:void(); est tombé hors de la faveur avec la plupart des gens qui se soucient de balisage. La meilleure chose à faire est d'avoir votre gestionnaire onclick return false, et avoir le lien pointait vers une page ou de la ressource qui fait sens pour les gens qui ont le javascript désactivé, ou à l'aide d'un javascript bloqueur comme NoScript.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X