2012-03-27 22 views
15

La función de devolución de llamada que estoy trabajando tiene la siguiente firma (de http://api.jquery.com/load/):parámetros en la función de devolución de llamada

complete(responseText, textStatus, XMLHttpRequest) 

Ahora, lo único que necesitan el tercer parámetro. En Lua hay una convención en que se utiliza un guión para saltar valores de retorno innecesarios de funciones (saltar porque _ en realidad mantener el valor):

var1, _, _, var4 = func() 

Así que se me ocurrió hacer una cosa similar con JavaScript y pongo mi firma de función a esto:

function (_, _, XMLHttpRequest) 

¿Hay algo de malo en este enfoque, quizás hay una manera mejor/más limpia?

+0

creo que la mejor solución se proporciona en [Saltarse parámetros de las funciones opcionales en JavaScript] [1] [1]: http://stackoverflow.com/questions/ 8356227/skipping-optional-function-parameters-in-javascript/8356945 – Mohsenme

+1

@Mohsenme Esa es una pregunta diferente, se trata de pasar parámetros a las funciones. Este se trata de definir una función de devolución de llamada. – Stijn

Respuesta

11

La técnica no es bonita, pero la utilizo yo mismo en varias ocasiones. Supongo que aún es bastante mejor darles a esos argumentos no utilizados nombres significativos (solo para evitar confusiones), pero puedes usar guiones bajos.

A menudo veo que utiliza en las devoluciones de llamada relacionados con jQuery, donde el index se pasa a menudo en como primer argumento, como

$('.foo').each(function(_, node) { 
}); 

porque la mayoría de las veces, no se preocupan por el índice de allí. Por lo tanto, para responder a su pregunta real, no hay nada de malo en utilizar la técnica (al margen de la confusión) y no hay una forma mejor/más limpia de omitir los argumentos no deseados.

+3

Sí, evitaría usar guiones bajos si planea usar underscore.js o lodash. Me acabo de afectar, así que mejor usar otros marcadores de posición. – Dave

1

Está utilizando dos argumentos que tienen el mismo nombre. Usted debe escribir de manera:

function (_, __, myXhr) 
+0

No estoy usando los valores de esos parámetros, por lo tanto, aunque uno sea sobreescrito por el otro, no importa si tienen el mismo nombre. – Stijn

+3

bien, ¡entonces estás usando el método correcto! El carácter _ se usa a menudo para saltear parámetros o para crear funciones parciales en varios idiomas. –

Cuestiones relacionadas