2012-03-27 18 views
15

La funzione di callback sto lavorando con ha la seguente firma (da http://api.jquery.com/load/):Saltare i parametri in funzione di callback

complete(responseText, textStatus, XMLHttpRequest) 

Ora, ho solo bisogno il terzo parametro. In Lua c'è una convenzione in cui una sottolineatura viene utilizzata per saltare valori di ritorno non necessari dalle funzioni (saltare perché _ effettivamente contenere il valore):

var1, _, _, var4 = func() 

così ho pensato di fare una cosa simile con Javascript e imposta la mia firma di funzione a questo:

function (_, _, XMLHttpRequest) 

C'è qualcosa di sbagliato in questo approccio, forse c'è un modo migliore/più pulito?

+0

Penso che la soluzione migliore è fornita in [Saltare i parametri delle funzioni opzionali in JavaScript] [1] [1]: http://stackoverflow.com/questions/ 8356227/skipping-optional-function-parameters-in-javascript/8356945 – Mohsenme

+1

@Mohsenme Questa è una domanda diversa, riguarda il passaggio dei parametri alle funzioni. Questo riguarda la definizione di una funzione di callback. – Stijn

risposta

11

La tecnica non è carina, ma la uso io stesso in diverse occasioni. Immagino che sia ancora meglio dare a quegli argomenti inutilizzati nomi significativi (solo per evitare confusione), ma stai bene usando i caratteri di sottolineatura.

vedo spesso è usato in callback jQuery correlati, dove il index è spesso passata come primo argomento, come

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

perché la maggior parte del tempo, non si preoccupano l'indice lì. Quindi, per rispondere alla tua domanda, non c'è niente di sbagliato nell'usare la tecnica (oltre alla confusione) e non esiste un modo migliore/più pulito per saltare gli argomenti indesiderati.

+3

Sì, eviterei di usare caratteri di sottolineatura se hai intenzione di usare underscore.js o lodash. Mi sono solo fatto un po 'da solo, quindi è meglio usare solo altri segnaposto. – Dave

1

Stai utilizzando due argomenti che hanno lo stesso nome. Si dovrebbe scrivere così:

function (_, __, myXhr) 
+0

Non sto usando i valori di quei parametri, quindi anche se uno sarà sovrascritto dall'altro, non importa se hanno lo stesso nome. – Stijn

+3

ok, quindi stai usando il metodo giusto! Il carattere _ viene spesso utilizzato per saltare i parametri o per creare funzioni parziali in più lingue. –

Problemi correlati