javascript - ¿Qué propósito real sirve $.noop() en jQuery 1.4?
jquery-1.4 (9)
¿Si una función requiere que pase una función como argumento quizás? Es más corto decir do_something($.noop)
que do_something(function(){})
.
Aunque no por mucho ...
... 6 caracteres ...
... sí, esa característica parece bastante inútil en realidad.
Revisando las notas de lanzamiento relacionadas con jQuery 1.4, encontré $.noop()
que es:
Descripción : Una función vacía. (agregado en 1.4)
Puede utilizar esta función vacía cuando desee pasar por una función que no hará nada.
Tal vez me esté perdiendo algo profundo aquí, pero ¿cuál es exactamente un uso práctico de pasar por alto una función vacía?
Ejemplos de código apreciados.
Ejemplo del mundo real (bueno, casi):
jQuery.fn.myAwesomeAjax = function(url, complete) {
return jQuery.ajax(url || this.url)
.complete(complete || jQuery.noop);
};
Úsalo en lugar de la function (){}
Es puramente una conveniencia / reemplazo para function(){}
en el contexto de donde se requieren devoluciones de llamadas, no creo que lo esté usando en un futuro cercano.
Apuesto a que el equipo de jQuery se rió bastante cuando lo lanzaron, también tiene un propósito cómico.
Esta función se propuso debido a problemas de rendimiento en los sistemas integrados al usar $.ajax
, informados en la lista de correo de jQuery-Dev. Puedes ver el thread .
Básicamente, prefirieron introducir y utilizar esta función vacía única, en lugar de declarar funciones anónimas vacías por todas partes.
Ahora esta función se usa internamente en los módulos ajax , event y offset .
Puedes echarle un vistazo a la commit cuando se introdujo también.
La única razón lógica es si estás llamando a una función que hace algo Y llama a otra función, y quieres que la función de nivel superior haga su función sin llamar a una función de parámetro.
La mayoría de las funciones jQuery tienen opcionalmente una función de parámetro, por lo que no tiene que pasar una. Tal vez haya una o dos en las que no sea así, o tal vez sea para ayudar a los desarrolladores con su código personalizado que se comporta de esta manera.
Probablemente, si alguna API incorrecta requiere una función como parámetro, y no quiere hacer nada en ella, esta sería una forma compatible con el marco de hacerlo tan obvio.
Puede ser útil si tiene una función que suministra funciones a otras funciones.
Ejemplo: Usted tiene una lista de datos. Cada elemento tiene un botón que hace algo. El "algo" puede ser diferente para cada elemento. Tiene un "FunctionFactory" que toma el elemento y devuelve una función. Si no quiere que el botón haga algo por alguna razón, entonces la forma más limpia podría ser devolver una función vacía, ya que de esa manera sabe que su Fábrica SIEMPRE devuelve una función.
No tengo un ejemplo concreto para jQuery, pero creo que esto podría ser útil cuando se utiliza en un bloque .each o .map.
Si tiene una función que acepta una función como parámetro y no tiene ningún código para asignarla, puede pasar $.noop
.
No puedo pensar en ninguno de estos casos en jQuery donde el parámetro no es opcional en primer lugar, sin embargo.
A diferencia de la function(){}
escritura function(){}
, pasar $.noop
no creará una nueva instancia de función, ahorrando un poco de memoria. Sin embargo, si lo que está pasando para modificar el objeto de función (por ejemplo, funcParam.id = 2
), pasar $.noop
desordenará las cosas.
Utilizo un par de complementos que requieren devoluciones de llamada, pero para algunas partes no quiero utilizar una determinada devolución de llamada. Entonces, puse en función () {}.
Noop se define en la fuente jQuery como
noop: function() {}
por lo que se ajustará a cualquier lugar en el que utilice una función en blanco, como el ejemplo anterior.