Qual è l'uso normativo (migliore) degli argomenti Javascript oggetto [chiuso]

0

JS offre l'oggetto 'arguments' all'interno delle funzioni per rappresentare tutti gli argomenti passati. Esiste un concetto ampiamente accettato per quando / dove dovrebbe essere usato?

Ho visto articoli del genere in "wild" che mi sembrano codificati:

function myFxn () {
  var myVar = arguments[0];
  // do something with myVar
}

questo è un esempio molto semplificato, ma illustra ciò che mi sembra una cattiva pratica di codifica. Preferirei

function myFxn (myVar) {
  // do something with myVar
}

Un collega l'ha usato in un certo numero di punti in cui desiderava solo nominare gli argomenti "richiesti" ("richiesti" dall'implementazione), ma omettere quelli "facoltativi":

function myFxn (myReqVar) {
  var myOptVar = (arguments[1] !== undefined) ? arguments[1] : false;
  // do something with vars
}

Ciò non è sembrato saggio per motivi di leggibilità e manutenibilità ridotte. Mi sembra di creare funzioni con interfacce confuse che devono basarsi sulla conoscenza dello sviluppatore del suo intento o della documentazione esterna da comprendere e utilizzare.

È solo una questione di opinione, o c'è una preponderanza di opinioni su questo?

    
posta gkl 29.09.2014 - 19:22
fonte

2 risposte

0

Penso che tu abbia ragione, la procedura migliore sarebbe utilizzare i parametri oltre var paramName = arguments[0] . È più pulito, più facile da leggere e mostra meglio l'intento. Come regola generale, l'argomento objects deve essere utilizzato su parametri in alcuni scenari:

Può esserci un numero N di parametri:

    function sum(){
    var total = 0;
    for (var i = 0; i < arguments.length; i++) {
        total += arguments[i];
    }
    return total;
}

Se vuoi chiamare genericamente altre funzioni con gli argomenti passati:

function other() {
    otherFunction.apply(this, arguments);
}

vs

function other(arg1, arg2, arg3) {
    otherFunction.call(this, arg1, arg2, arg3);
}

Utilizzo di funzioni riutilizzabili che utilizzano argomenti:

Ecco un esempio di argomento generico che convalida: link

    
risposta data 29.09.2014 - 19:46
fonte
0

L'oggetto arguments è utile per simulare il comportamento o i metodi sovraccaricati, o per creare funzioni che accettano numeri arbitrari di argomenti. Un buon esempio nativo è il metodo Array#push :

var x = [];
x.push(1, 2);

È l'equivalente di:

var x = [];
x.push(1);
x.push(2);

Un buon esempio di simulazione dell'overload dei metodi è il metodo jQuery on :

$("#foo").on("click", function(event) {
    // process the click event when "#foo" gets clicked
});

$("#foo").on("click", ".bar", function(event) {
    // process click event when any element with "bar" as one of its
    // classes gets clicked inside "#foo"
});

È lo stesso nome del metodo ( on ) ma i diversi numeri e tipi di argomenti cambiano il comportamento del metodo, dando l'impressione che il metodo on abbia due overload.

    
risposta data 29.09.2014 - 19:40
fonte

Leggi altre domande sui tag