46 votes

À quoi sert réellement $.noop() dans jQuery 1.4 ?

En parcourant les notes de mise à jour de jQuery 1.4, je suis tombé sur les éléments suivants $.noop() qui est :

Description : Une fonction vide. (ajouté en 1.4)

Vous pouvez utiliser cette fonction vide lorsque vous souhaitez faire circuler une fonction qui ne fera rien.

Peut-être que quelque chose de profond m'échappe ici, mais quelle est l'utilité pratique de passer une fonction vide ?

Exemples de code appréciés.

48voto

CMS Points 315406

Cette fonction a été proposée en raison de problèmes de performances sur les systèmes embarqués lors de l'utilisation de la fonction $.ajax , signalé sur la liste de diffusion jQuery-Dev. Vous pouvez voir le filetage .

En fait, ils ont préféré introduire et utiliser cette unique fonction vide, plutôt que de déclarer des fonctions anonymes vides partout.

Maintenant, cette fonction est utilisée en interne dans le ajax , événement y décalage modules.

Vous pouvez jeter un coup d'œil à la commit lorsqu'il a été introduit également.

19voto

SLaks Points 391154

Si vous avez une fonction qui accepte une fonction comme paramètre, et que vous n'avez pas de code à lui donner, vous pouvez passer $.noop .

Je ne pense pas qu'il y ait de tels cas dans jQuery où le paramètre n'est pas optionnel en premier lieu, cependant.

Contrairement à l'écriture function(){} en passant $.noop ne créera pas une nouvelle instance de fonction, ce qui permet d'économiser un peu de mémoire. Cependant, si ce à quoi vous le passez modifie l'objet fonction (ex, funcParam.id = 2 ), en passant $.noop va tout gâcher.

9voto

Corin Points 1419

Exemple concret (enfin presque) :

jQuery.fn.myAwesomeAjax = function(url, complete) {
  return jQuery.ajax(url || this.url)
    .complete(complete || jQuery.noop);
};

Utilisez-le à la place de function (){}

3voto

Noon Silk Points 30396

Si une mauvaise API requiert une fonction en tant que paramètre, et que vous ne voulez rien y faire, ce serait une manière supportée par le cadre de le rendre évident.

2voto

JAL Points 11164

J'utilise quelques plugins qui nécessitent des callbacks, mais pour certaines parties, je ne veux pas vraiment utiliser un certain callback. Donc, je mets dans function() {}.

noop est défini dans la source jQuery comme suit

noop: function() {}

afin qu'elle puisse être utilisée partout où vous utiliseriez une fonction vide, comme dans l'exemple ci-dessus.

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