Esistono metodi standard per contrassegnare un argomento di funzione come non usato in JavaScript, analogamente all'avvio di un argomento di metodo con un trattino di sottolineatura in Ruby?Le convenzioni standard per indicare un argomento di funzione non sono utilizzate in JavaScript
risposta
Solo così abbiamo un esempio di lavorare da, questo è abbastanza comune con jQuery di $.each
in cui si sta scrivendo il codice che non ha bisogno l'indice, proprio il valore, nella richiamata iterazione ($.each
è arretrato rispetto al Array#forEach
):
$.each(objectOrArrayLikeThing, function(_, value) { }
// Use value here
});
Utilizzando _
è il più vicino che ho visto ad un modo standard per farlo, sì, ma ho anche visto un sacco di altri — dandogli un nome riflettente del suo scopo in ogni caso (index
), chiamandolo unused
, ecc.
L'utilizzo di _
è standard, probabilmente in base a quanti sviluppatori JS utilizzano anche Ruby.
Si noti che in Ruby, non si utilizza nomi di variabili a partire da _
di ignorare i parametri - come quelli sono nomi di variabili validi - ma _
sé
, che non è una variabile, ma un buco nero
. def f(_, _, x)
è valido (ignorando due argomenti); def f(_a, _a, x)
non valido (due parametri hanno lo stesso nome); def f(_a, _b, x) puts _a, _b, x end; f(1, 2, 3)
emette tutti e tre i numeri.
È possibile fare la stessa cosa in JavaScript con qualsiasi variabile - JavaScript vede nulla di sbagliato nel ripetere i nomi dei parametri: function a(a, a, x) { return [a, x]; }
è una dichiarazione valida, con i valori più tardi sovrascrivendo quelli precedenti: a(1, 2, 3)
rendimenti [2, 3]
. _
è solo un altro nome di variabile in JavaScript, senza alcuna gestione speciale.
EDIT: Grazie Andrew Grimm per una buona referenza su _
in Ruby.
Per lo stato di '_' in Ruby, c'è http://stackoverflow.com/questions/9559561/where-and -come-è-il-underscore-variabile-specificata –
@AndrewGrimm: Ah, buona scoperta. Grazie. – Amadan
* "JavaScript non vede nulla di sbagliato nel ripetere i nomi dei parametri" * Per tua informazione non è valido [dal 2009] (http://ecma-international.org/ecma-262/5.1/#sec-13.1) se utilizzi la modalità rigorosa (e non usare la modalità rigorosa è ... beh ... diciamo solo: usa la modalità rigorosa :-)). Esempio: https://jsfiddle.net/L9rc23xm/ –
Con i browser di supporto destrutturazione si può fare:
function ({}, {}, value) {
// ...value
}
che è una specie di pulito in quanto evita il problema di molteplici argomenti che hanno lo stesso nome e, inoltre, non creerà problemi con le librerie che assegnano i metodi per _
(lodash, trattino basso, ecc.).
Sfortunatamente, questo genera se un argomento non utilizzato è 'indefinito' o' null'. –
@OlegsJeremejevs 'function ({} = {}, {} = {}, valore) {...}' aiuta qui, ma diventa complicato ... – oluckyman
@oluckyman Bella soluzione! "Non voglio nominare un argo non usato? Basta manometterlo!" –
Da quello che ho visto finora, è ancora '_' che viene utilizzato. –
Se stai cercando di rimuovere le variabili non utilizzate usa [jslint] (http://jslint.com) – Tushar