35 votes

Fonctions Javascript et arguments optionnels

J'ai deux presque identique fonctions javascript qui sont utilisés pour initier un jquery $.obtenez de l'appel. Les arguments de la fonction sont passés au script appelé.

Le problème est que un ensemble d'appels nécessite un argument supplémentaire que l'autre ne l'est pas.

Pour accomplir cela, je suis en utilisant les deux à peu près identique des fonctions javascript je l'ai mentionné. Ici, ils sont:

function process(url, domid, domain, scan_id)
{
    $.get(url,
    {
        domain: domain,
        scan_id: scan_id
    },

    function(data)
    {
        $(domid).html(data);
    });
}

function process_type(url, domid, type, domain, scan_id)
{
    $.get(url,
    {
        domain: domain,
        type: type,
        scan_id: scan_id
    },

    function(data)
    {
        $(domid).html(data);
    });
}

Comme vous pouvez le voir, la 2ème fonction accepte simplement un argument supplémentaire appelé "type" qui est ensuite transmis par le biais de l' $.obtenez de l'appel.

Je veux combiner ces deux fonctions, mais je ne suis pas sûr de savoir comment je peut éventuellement inclure que le 3ème argument dans ce ( tableau / objet / whatever c'est dans { } ( oui, javascript noob) ) qui est passée de $.obtenir.

EDIT juste pour dire.... putain, les gars, vous êtes bon. :D

35voto

Quintin Robinson Points 41988

tous les paramètres sont en javascript en option, vous pouvez utiliser les paramètres de tableau à l'intérieur d'une fonction pour accéder aux paramètres passés ordinally comme suit:

function myFunction(option1)
{
   var option2 = arguments[1];
   if(arguments[0] == option1)
      alert("Happy Day, Option1 = " + option1 + ", Option2 = " + option2);
}

myFunction("Hello", "World");

Produit: Happy Day, Option1 = Bonjour, Option2 = Le Monde

Nous espérons que cette montre comment vous pouvez utiliser le tableau d'arguments pour améliorer le code.

    function process_type(url, domid, domain, scan_id)
    {
            var myOptions = {
               domain: domain,
               scan_id: scan_id
            };

            if(arguments[4])
                myOptions["type"] = arguments[4];

            $.get(url, myOptions,

            function(data)
            {
                    $(domid).html(data);
            });
    }

Ensuite, vous pouvez l'appeler avec le dernier paramètre est le type de comme facultatif, si le paramètre est passé il est utilisé, si non, elle est omise.

En outre, depuis le paramètre est facultatif, en premier lieu, vous pouvez également ajouter le nom à la fin de la définition de la fonction et de l'utilisation de la même si, mais au lieu de arguments[4] vous feriez if(type) myOptions["type"] = type;

    function process_type(url, domid, domain, scan_id, type)
    {
            var myOptions = {
               domain: domain,
               scan_id: scan_id
            };

            if(type)
                myOptions["type"] = type;

            $.get(url, myOptions,

            function(data)
            {
                    $(domid).html(data);
            });
    }

Cet Appel serait inclure le type de

 process_type("xxx", "xxx", "xxx", "xxx", "xxx");

d'où cet appel ne serait pas

 process_type("xxx", "xxx", "xxx", "xxx");

29voto

Paolo Bergantino Points 199336

Puisque tout ce que vous faites avec tout sauf url et domid passe au $.get , pourquoi ne pas le faire?

 function process_type(url, domid, args) {
    $.get(url, args, function(data) {
        $(domid).html(data);
    });
}

// call it without type
process_type('myurl', 'domid', {domain:'..', scanid:'...'});
// call it with type
process_type('myurl', 'domid', {type: '..', domain:'..', scanid:'..'});
 

16voto

Giovanne Afonso Points 411

Quelques façons simples de le faire

 // 'b' is optional
// the 'null' value would be the default value

function Example1(a,b){
    b = b || null;

    // Some code here
}

function Example2(a,b){
    if(typeof b == 'undefined') b = null;

    // Some code here
}

function Example3(a,b){
    if(b === undefined) b=null;

    // Some code here
}

function Example4(a,b){
    if(!b) b=null;

    // Some code here
}
 

Pour des arguments illimités, vous pouvez utiliser le tableau 'arguments', exemple:

 function ExampleArguments(){
    for(var i=0; i<arguments.length; i++){
            // Alert the current argument
            alert(arguments[i]);
    }
}

ExampleArguments('arg1',2,someVar);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X