Après avoir jeté sur les notes de publication concernant jQuery 1.4, je suis tombé sur $.noop()
qui est:
Description : Une fonction vide. (ajouté dans 1.4)
_ {Vous pouvez utiliser cette fonction vide pour passer une fonction qui ne fera rien.} _
Peut-être me manque-t-il quelque chose de profond ici, mais quel est exactement un usage pratique de passer d'une fonction vide
Des exemples de code appréciés.
Cette fonction a été proposée en raison de problèmes de performances sur les systèmes embarqués lors de l’utilisation de $.ajax
, indiqué sur la liste de diffusion jQuery-Dev. Vous pouvez voir le thread .
Fondamentalement, ils ont préféré introduire et utiliser cette fonction vide unique, plutôt que de déclarer des fonctions anonymes vides tout autour.
Maintenant, cette fonction est utilisée en interne dans les modules ajax , event et offset .
Vous pouvez aussi regarder le commit quand il a été introduit.
Si vous avez une fonction qui accepte une fonction en tant que paramètre et que vous n'avez aucun code à lui attribuer, vous pouvez passer $.noop
.
Je ne peux pas penser à de tels cas dans jQuery où le paramètre n'est pas facultatif en premier lieu, cependant.
Contrairement à l'écriture function(){}
, transmettre $.noop
ne créera pas de nouvelle instance de fonction, ce qui économisera un peu de mémoire. Cependant, si quoi que vous transmettiez modifie l'objet de fonction (par exemple, funcParam.id = 2
), transmettre $.noop
gâchera les choses.
Exemple du monde réel (enfin presque):
jQuery.fn.myAwesomeAjax = function(url, complete) {
return jQuery.ajax(url || this.url)
.complete(complete || jQuery.noop);
};
Utilisez-le au lieu de function (){}
Probablement si une mauvaise API nécessite une fonction en tant que paramètre et que vous ne voulez rien y faire, ce serait une façon de rendre cela évident, avec l'aide de la structure.
J'utilise quelques plugins qui nécessitent des rappels, mais pour certaines parties, je ne souhaite pas utiliser un certain rappel. Donc, j'ai mis dans function () {}.
noop est défini dans la source jQuery comme
noop: function() {}
il ira donc n'importe où vous utiliseriez une fonction vierge, comme dans l'exemple ci-dessus.
La seule raison logique est que si vous appelez une fonction qui fait quelque chose ET en appelle une autre, et que vous souhaitiez que la fonction de niveau supérieur le fasse sans appeler de fonction paramètre.
La plupart des fonctions jQuery prennent éventuellement une fonction de paramètre, vous n’avez donc pas à en passer un. Peut-être qu’il ya une ou deux où ce n’est pas le cas - ou peut-être est-ce d’aider les développeurs avec leur code personnalisé qui se comporte comme ceci.
Si une fonction nécessite que vous passiez une fonction en argument peut-être? Il est plus court de dire do_something($.noop)
que do_something(function(){})
.
Bien que pas beaucoup ...
... 6 personnages ...
... oui, cette fonctionnalité a l'air tout à fait inutile.
C’est purement une commodité/un remplacement pour function(){}
dans le contexte où des rappels sont nécessaires - je ne pense pas que je l’utiliserai de si tôt.
Je parie que l’équipe jQuery a bien ri quand elle l’a lâchée, a aussi un but comique.
Cela peut être utile si vous avez une fonction qui fournit des fonctions à d’autres fonctions.
Exemple: vous avez une liste de données. Chaque élément a un bouton qui fait quelque chose. Le "quelque chose" peut être différent pour chaque article. Vous avez une "FunctionFactory" qui prend l'élément et renvoie une fonction. Si vous ne voulez pas que le bouton agisse pour quelque raison que ce soit, le moyen le plus propre peut être de renvoyer une fonction vide, car vous saurez ainsi que votre usine renvoie TOUJOURS une fonction.
Je n'ai pas d'exemple concret pour jQuery, mais j'imagine que cela pourrait être utile lorsqu'il est utilisé dans un bloc .each ou .map.